问题标签 [table-variable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
228401 浏览

sql-server - 我什么时候应该在 sql server 中使用表变量和临时表?

我在表变量中学习更多细节。它说临时表总是在磁盘上,而表变量在内存中,也就是说,表变量的性能优于临时表,因为表变量使用的IO操作比临时表少。

但有时,如果一个表变量中有太多的记录无法包含在内存中,那么该表变量会像临时表一样放在磁盘上。

但我不知道“太多记录”是什么。100,000 条记录?还是 1000,000 条记录?我如何知道我正在使用的表变量是在内存中还是在磁盘上?SQL Server 2005 中是否有任何函数或工具来测量表变量的规模或让我知道表变量何时从内存放入磁盘?

0 投票
3 回答
2034 浏览

tsql - TSQL设置表变量的列值

我正在尝试迭代地设置表变量的各个列,如下所示:

以上不起作用,因为您无法访问像数组这样的表变量。如何获得以下功能?

0 投票
2 回答
10205 浏览

sql-server - 具有区分大小写列的 T-SQL 表变量 - 整理 SQL_Latin1_General_CP1_CS_AS

是否可以在表变量列的定义中整理 SQL_Latin1_General_CP1_CS_AS?

我想这样做的原因是因为我的源表中有区分大小写的信息,但是当我将它插入到表变量中时,主键出现问题(它是聚集的) - 检测到重复值 - 比如“全部”和所有'。

这就是为什么我试图找到一种方法使表变量列也区分大小写,如下所示:

给我:“SQL_Latin1_General_CP1_CI_AS”

0 投票
2 回答
5559 浏览

sql - SQL游标内表变量的范围

如果我在 MS SQL 2008 R2 中运行以下命令,我会得到意想不到的结果。

最后一次迭代的结果:

我原以为只会看到

似乎表变量 @tempTable 在游标迭代之间保持在范围内 - 但是如何在每次迭代中重新声明变量?对我来说毫无意义。

我解决了

在每次迭代中——这也支持了我关于它仍在范围内的假设。

谁能解释这种行为?

0 投票
1 回答
1139 浏览

.net - 表值参数:以小块发送数据

我正在从 csv 文件中读取数据并将数据作为表变量发送到存储过程。从我到目前为止的测试来看,我能够在 3 分 30 秒内处理 300k 条记录。该文件可能包含多达数百万条记录。我想知道一次性将所有这些记录发送到存储过程是否是个好主意,或者我应该分批发送它们,比如 500k?我已将命令超时设置为 1800。

0 投票
5 回答
26516 浏览

sql - TSQL 表变量初始化

我有以下 TSQL 表变量:

我只想快速查找每个月的天数。如何像 C 数组一样初始化此表:

0 投票
2 回答
1061 浏览

sql-server - 系统存储过程和表参数

我习惯这样做:

但现在我想在master中创建 proc并在其他数据库中使用它:

...它构建得很好,但我不能使用它!

产量:

消息 2715,级别 16,状态 3,第 1 行列、参数或变量 #1:找不到数据类型 table_list。参数或变量“@ls”的数据类型无效。

所以我尝试创建一个同义词,它在创建过程中不会抱怨但没有帮助:

任何人的想法?

0 投票
1 回答
423 浏览

sql-server-2008 - SQL Server 2008 中的表变量自引用

我在 SQL Server 中发现了一件很奇怪的事情。我不确定这是否正常。

它总是说插入了 0 行。如果我使用物理表而不是@table,它可以正常工作。

我错过了查询中的任何内容吗?

0 投票
2 回答
4877 浏览

sql - 从表变量 MS SQL 中删除

我试图在存储过程中的每个循环中从表变量中删除行,但有时它会一直循环并且无法删除记录。即使我尝试打印该值,该记录仍然存在。执行删除语句时,我没有收到任何错误。

是否存在从表变量中删除的实例延迟导致循环不结束?

这是我的代码:

这是我从打印价值观中得到的:

然后脚本在 10406 处循环。

注意:在这部分脚本之前,我已经将@temp_table 用于其他进程,这就是为什么 rid 值现在为 10400 及以上的原因

0 投票
2 回答
725 浏览

tsql - sql server 使用从表变量和数据库表的连接中选择来更新许多列

我有经典的人-> 人属性方案。所以,像这样:person(PK) <- person_attribute(FK)

我需要的是一个查询来获取一个人与她的属性相结合的一行。例如,要转换:

到:

更糟糕的是,我的人在一个表变量中。

所以,我有(在一个参数为 person_id 的 sp 中):

由于某种原因,这当然不起作用。如果我查询两个连接表并选择“pa.attribute_value where pa.attribute_type_id = 'someval'”,我会得到正确的值。但是更新不起作用。

当然,我可以将其写为三个更新,但我认为执行一个连接然后在更新子句中进行过滤会更快。

另外,请记住,我的属性分布在三个表中,而不仅仅是属性表。所以,这就是我有 table 变量的原因。

非常欢迎任何帮助。也许我正在以错误的方式解决这个问题。性能很重要。实现这一目标的最有效方法是什么?

非常感谢你。