问题标签 [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 投票
1 回答
3057 浏览

sql - 在 T-SQL 中,如何在子查询中引用表变量?

我已经声明了一个表变量“@t”,并正确执行了“INSERT-INTO-SELECT”。当我尝试通过一些额外的计算来查询表变量以进行每组行编号时,直接使用“@t”时出现“必须声明变量”或使用“@t”别名时出现“无效的对象名称”错误'。请多多指教。

0 投票
1 回答
1306 浏览

sql-server-2008 - 在 MS SQL Server 中,将行插入表变量突然变得非常缓慢

在 MS SQL Server 2008 中,将行插入表变量突然变得非常缓慢。表变量以及查询和插入行的创建是在存储过程中完成的,它变得非常慢。

查询几乎立即完成,返回一个小集合(10 行,1 列整数),并且需要 50 秒以上的时间才能插入到表变量中。我切换回临时表,这很好,操作在几微秒内发生。

0 投票
8 回答
178857 浏览

sql - 如何在动态 sql 语句中使用表变量?

在我的存储过程中,我在我的过程之上声明了两个表变量。现在我试图在动态 sql 语句中使用该表变量,但在执行该过程时出现此错误。我正在使用 Sql Server 2008。

这就是我的查询的样子,

我收到以下错误,

必须声明表变量“@RelPro”。必须声明表变量“@TSku”。

我试图将表格放在动态查询的字符串块之外,但无济于事。

0 投票
3 回答
25402 浏览

performance - CTE(通用表表达式)与临时表或表变量,哪个更快?

CTE(Common Table Expression) vs Temp tablesor Table variables,哪个更快?

0 投票
8 回答
152332 浏览

sql - 如何在 SQL-Server 中删除表变量?我应该这样做吗?

我在脚本中有一个表变量(不是存储过程)。两个问题:

  1. 如何删除表变量?Drop Table @varName 给出“不正确的 snytax”错误。
  2. 我应该总是这样做吗?我听说这是一个很好的做法。像这样的小脚本真的有必要吗?

这是我的代码:

0 投票
3 回答
21372 浏览

sql-server - 动态查询结果到临时表或表变量中

我有一个使用 sp_executesql 生成结果集的存储过程,结果中的列数可能会有所不同,但会采用 Col1 Col2 Col3 等形式。

我需要将结果放入临时表或表变量中,以便我可以使用它。问题是我需要定义临时表的列,我无法使用 sp_executesql 动态地执行此操作,因为在执行命令后临时表的范围丢失了。

我玩弄了使用全局临时表的想法,因为范围允许动态创建它,但是,全局临时表很有可能会通过此过程的并发执行来更新。

有任何想法吗?

0 投票
2 回答
636 浏览

sql-server - 奇怪的 SQL Server 延迟加载表变量?

我在 SQL Server 2008 中遇到了一个误导性错误,我想知道是否有人可以解释发生在我身上的事情?

我有一个像这样的存储过程:

实际的存储过程更复杂,但这是要点。

在运行 SP 时,我会在“字符串或二进制数据将被截断”错误之前获得大量输出行。错误中的特定行引用指向上面主 SELECT 语句中的某个位置,但经过一段时间的调试后,我发现我在开始时放在交叉引用中的值太大并且修复了它。

但我的问题是:

  • SQL Server 是如何在没有完成插入交叉引用行的情况下执行主 SELECT 语句的?是否有某种延迟处理?延迟加载表变量?

  • 为什么“字符串或二进制数据将被截断”消息没有指向它实际发生的位置?还是我做错了?

谢谢,雷

编辑

我认为这一定与表变量的 LEFT JOIN 有关,并且 WHERE 子句中不涉及它的列。SQL Server 似乎已将表的准备工作留到需要它之前(在 INNER JOIN 完成之后),并且当它已经准备好要选择的大部分结果集时出错。

我也注意到成功插入到@cross_reference 中的值确实显示在返回的结果集中。而因太大而无法插入的行只显示 NULL。

0 投票
3 回答
1795 浏览

tsql - 提高删除表变量的性能

我已经看到在 t-sql 中对普通表进行删除的性能调整。

但是对表变量的删除是否有性能调整?


编辑

这是一个示例:绘图变得更厚,因为 UserExclusionsEvaluate 实际上是一个 CTE,但我将首先尝试围绕表变量对其进行优化(如果可能的话)。CTE 本身运行速度非常快。只是删除速度很慢。

在当前的化身中,@UsersCriteria 是:

我已经尝试将@UsersCriteria 作为非主要并尝试使用集群非集群。

也有可能是IN的问题。我还尝试过对子查询进行 JOIN。


编辑:

好消息! 在大量使用 SQL 之后,包括将 suquery 移动到链式 CTE、尝试表提示等等等。

从表变量到临时表的简单更改显着提高了性能。

这真的很有趣,因为删除自己运行良好,子查询(在 CTE 上)自己运行良好。但是将两者混合起来非常缓慢。

我猜在子查询中使用 CTE 时优化器无法启动?也许当与删除混合。

0 投票
1 回答
16451 浏览

sql - 如何在“从选择更新”查询中使用表变量?

我有这个表变量声明,然后是一个查询:

U定义如下:

当我在 SQL Management Studio 中针对 SQL Server 2005 Express 运行它时,我得到以下信息:

消息 208,第 16 层,状态 1,第 24 行

无效的对象名称“@CurrentItems”。

我已经看过这个这个非常相似的问题,但不知道如何解决这个问题。

实际问题是什么,我该如何解决?

0 投票
3 回答
8642 浏览

sql - 使用 IN (NULL) 查询 SQL Server 不起作用

当我定义“用户定义的表类型”时,为:

我在这个表变量中放置了 0 和 null。然后我做这个查询:

只会得到item=0item is null

简单地说:SELECT something FROM theTable WHERE item IN (0, NULL)不工作(虽然没有错误)它必须是SELECT something FROM theTable WHERE item=0 OR item IS NULL

所以,我的问题是,如果我喜欢使用User-Defined Table Type,但我还需要使用 NULL 值。如何正确执行查询以获取包含空项的结果。

谢谢(顺便说一句,我使用 MS SQL Server 2008 R2)