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

sql-server - 如何检查 SQL Server 中的表变量是否为空?

这是我的一个存储过程的一部分:

@dataInTable IS NULL语法错误,错误是

必须声明标量变量“@dataInTable”

所以我把它改成:

这可行,但如果@dataInTable有超过 1 个项目,我会收到错误消息:

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

可以理解,所以我将其更改为:

完美运行,我所拥有的是性能问题。

我想知道,是否有更简单的方法来检查表变量是否为空,例如

0 投票
3 回答
316 浏览

sql-server-2008 - SQL Server 2008 - UDF 参数类型和返回类型

在 SQL 2008 中编写 UDF 时,我经常偶然发现以下问题。请告诉我我的以下假设是对还是错。

  1. UDF 可以返回数据表。
  2. 但是 UDF 不能接收数据表作为参数。
  3. UDF 可以接收用户定义表类型 (UDTT) 作为参数。
  4. 但是 UDF 不能返回用户定义的表类型 (UDTT)。
0 投票
3 回答
5645 浏览

sql-server-2008-r2 - 使用表变量比使用临时表快

我是否可以安全地假设我使用tempdb来编写临时表的存储过程,我最好将它们切换到表变量以获得更好的性能?

0 投票
1 回答
146092 浏览

sql-server-2008 - 在 SQL Server 2008 R2 中创建表变量

什么是表变量?以及如何使用与现有存储过程结果集匹配的列创建表变量(虚拟内存表)。

我执行了该过程,执行后,我知道列名。但是我是否必须声明与存储过程中相同的列数据类型?

编辑:我试过这个

0 投票
1 回答
60 浏览

sql - 可变数量的集合作为 SQL 数据库表

更多关于特定问题的数据库模型的问题。问题如下:

我有许多对象构成了固定表中的行,它们都是不同的(当然)。人们想创建包含可变数量的这些存储对象的集合。这些集合是用户定义的,因此没有硬编码。每组将由一个数字来表征。

我的问题是:有经验的 SQL 程序员能给我什么建议来实现这样的功能。我最直接的方法是使用表变量或临时表为每个这样的集合创建一个表。最后,一个已经存在的表,其中包含集合的名称(作为让用户知道数据库中当前存在哪些集合的一种方式)。

如果效率不高,我会寻找什么方向来解决这个问题?

谢谢。

0 投票
1 回答
36870 浏览

sql-server - 引用表变量时如何解决“必须声明标量变量”错误?

我不知道为什么(或者也许你不能这样做)我得到了超出范围的错误

必须声明标量变量“@CompanyGroupSites_Master.

那么是不是我不能在我的光标内以这种方式访问​​我的表变量,或者我一定错过了一些简单的事情,当从光标体内引用时,该表变量超出了范围?

0 投票
2 回答
69642 浏览

sql - PostgreSQL 表变量

T-SQL 中有类似表变量的东西吗?
在 Sql Server 中,它看起来像这样:

然后在程序中我可以:

并像处理普通表格一样使用此变量。

这是描述: http: //odetocode.com/Articles/365.aspx

0 投票
1 回答
4160 浏览

sql - 为什么在 UDF 中使用 INSERT - EXEC [存储过程] 语句会引发副作用?

我正在开发一个函数,该函数需要调用一个返回 N 行的存储过程,然后将结果插入临时表作为其处理的一部分。

在存储过程上调用 EXEC 就可以了: http ://sqlfiddle.com/#!3/ed11a/16

那么为什么将 EXEC 的结果插入到表变量中会引发错误: http ://sqlfiddle.com/#!3/ed11a/18

我得到的错误是:Invalid use of side-effecting or time-dependent operator in 'INSERT EXEC' within a function.

我知道这个错误通常是在试图操作不是函数本地的值时产生的,但是插入是在一个表变量上,所以这不应该是一个问题。

0 投票
2 回答
2730 浏览

sql-server - Viewing contents of table variable when debugging in sql server 2012

In the watch window whilst debugging in Sql Server 2012, we get to see the values of regular variables, we can look at xml in a special window and same with sql strings, but for a table variable it just says (table).

I'd really like to know if there is any way to peek inside that table variable at that moment and check on the contents.

EDIT:

I have discovered that Visual Studio (for a long time now), has had a "Table" visualizer alongside Xml, Html, and Text. This does not help me here, but it underscores the point I made originally that it is a very doable feature. I'm very disappointed in general with the Sql Server SSMS team vs the Visual Studio team. I think Visual Studio developers in Redmond ought to be forced every 5 years to do a "tour of duty" for 2 or 3 sprints on the SSMS team. They could help it sooo much if they did that.

Thank you.

0 投票
1 回答
537 浏览

sql-server - 子查询 X 临时表 X 动态 sql X 表值函数

我的观点总结了我的物品的很多信息。我们称之为 v_item_details。

此视图是通过递归 cte 定义的,如果未应用正确的过滤,可能会变得非常慢。基本上,如果我提供项目 ID 列表,事情就会顺利进行。所以像SELECT * FROM v_item_details WHERE item_id IN(1,2,3)在 1 秒内运行的东西。

当我尝试获取在另一个表中定义的一组项目的项目详细信息时,事情变得复杂了。SELECT * FROM v_item_details WHERE item_id IN (SELECT item_id FROM items WHERE group_id = 1)即使 group_id 已编入索引并且子查询返回与先前查询(1,2 和 3)相同的 item_id,该查询仍将花费 1 分钟。

我尝试创建一个表变量并将子查询的结果插入其中,然后对其进行连接,但仍然需要 1 分钟以上。

接下来,我尝试使用接收 item_id 作为参数的表值函数来包装我的视图,然后执行交叉应用,以尝试强制执行与简单选择相同的计划,但这需要 4 分钟!

现在我正在使用一个动态查询来选择 ID,然后执行快速子查询。但这不是最理想的,因为现在我被存储过程困住了,而不是我可以进一步操纵的视图。

关于如何强制 SQL 首先选择子查询中的值然后运行快速子查询的任何想法?我认为使用 LOOP 连接查询提示会起作用,但它没有,因为虽然它确实从子查询开始执行循环,但视图的查询计划与快速查询不同,所以我仍然有性能问题。

最好的问候,卡洛斯·乔丹