问题标签 [table-valued-parameters]

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 投票
2 回答
2745 浏览

excel - 从 VBA 转到 SQL Server 2008 R2 时,如何提高数据库性能?

我正在开发一个财务应用程序,该应用程序执行从 Excel 到 SQL Server 2008 R2 的 CRUD 操作。该应用程序使用 VBA 和 ADO。我正在尝试优化循环数千行并将更新发送到数据库的操作的性能。目前,存储过程每行调用一次。

当用户与应用程序的连接速度很慢时,性能也很慢,足以让他们开始抱怨。为了优化性能,我尝试了:

  1. 将所有操作批处理到一个 XML 文件中,然后一次性发送。不幸的是,性能变得更糟了。
  2. 接下来,我想在一个表值参数中批量处理所有更新。但是,VBA 和 ADO 不能使用表值参数。

我已经没有东西可以尝试了。从 VBA 转到 SQL Server 2008 R2 时,如何提高数据库性能?

0 投票
3 回答
4345 浏览

c# - 在 sql_variant 列的表值参数中传递“对象”类型的参数

我在 SQL Server 2012 中有一个表值参数,定义为:

我用 C# 调用它,代码大致如下所示:

然后我在调用时从 SQL Server 收到以下错误ExecuteNonQuery

不支持“值”列的类型。类型是“对象”

我发现有人在 3 年前被确定为已知的 Microsoft 错误时遇到了同样的问题。但是,该错误的链接已损坏。有谁知道是否有关于错误状态或潜在解决方法的更新信息?就目前而言,这个错误确实扼杀了sql_variant字段的价值。

0 投票
2 回答
476 浏览

sql-server-2008 - 如何使用表值参数查询文本列?

我有一个表值参数(@KEYWORD),它只有一列,其中包含 0 到多行关键字,这些关键字将针对一两个数据库 (nvarchar) 列(REMARKS 和 SUPPLEMENTAL_REMARKS)进行查询。超级简单的概念。

我遇到的问题是如何编写 SQL 来检查针对一个(或两个)数据库列提供的每个单独的关键字。

这是我未完成的 WHERE 子句部分......

0 投票
1 回答
23741 浏览

sql-server-2008 - 使用多个参数(包括表值参数)调用 MS SQL Server 存储过程

在这里和网上做了一些研究后,我不知道这是否可能。我想要做的是调用一个存储过程,它有几个参数,其中一个是表值参数。

这是我的存储过程片段:

我现在有另一个过程(proc2),它具有以下几行:

请注意,varX 和 var3 属于同一类型 MyType 当我执行 proc2 时,我收到错误,我为 dbo.procName 指定了太多参数

我当时认为不可能为存储过程指定多个参数,包括表值参数。我现在倾向于将我的 procName 定义更改为只有一个参数(正如所有在线示例似乎都有),并让我的表值参数充当参数值数组,包括我在我的信息上一个 select 语句(在 proc2 中)。但是,如果可以进行此调用,请说明如何进行。

谢谢

0 投票
3 回答
1258 浏览

sql-server - SQL Server 查询表值参数的短路 EXISTS 语句

我使用存储过程:

在我的 WHERE 子句中,我使用短路 (OR) 来加速执行,因为查询优化器知道我的大部分输入都默认为 Null。这使我的查询灵活快速。

我在 WHERE 子句中添加了一个表值参数。报告的执行时间从 150 毫秒增加到 450 毫秒,从 70,000 到 200,000。

请问如何短路不存在或加快此查询?在执行查询之前,我尝试添加一个 BIT 值并检查行是否在表值参数中。我发现的唯一方法是有两个查询并在另一个上执行一个。如果我必须修改一大堆查询或将多个表值参数添加到组合中,那就不好了。

提前致谢。

编辑:

表值参数对比:

和整数参数:

使用 TVP 在 0 行和 Integer 参数为空进行编译后显示出相似的执行速度。我假设查询优化器在正确的庄园中短路,而我之前的比较是不正确的。执行计划将上述成本分为 55% 和 45%,这是可以接受的。尽管 TVP 中有更多行时拆分不会改变,但生成报告的时间会增加,因为必须从磁盘读取更多页面。有趣的。

0 投票
0 回答
2169 浏览

mysql - mysql存储过程中表值参数的替代解决方案

有没有人可能已经找到了在 MYSQL 中使用表值参数的替代解决方案。我的情况是我想从 Visual Basic 前端应用程序中传递多行,并且我希望能够在一个请求中发送记录表,以便我可以将其包装在事务中。我做了很多研究,但仍然没有答案。也许有人可以帮助我。

0 投票
2 回答
2800 浏览

sql-server-2008 - 将数据作为 UDF 参数的 SQL Server 2008 表

我的问题: SQL Server 2008 中是否可以在存储过程中定义临时表并将其作为变量传递给用户定义的函数?

我需要执行以下操作:

  1. 我有程序dbo.GetMsgCntData

  2. 此过程正在进行一些计算,并且由于此过程,我将数据放入此过程中定义的临时表 ( GetMsgCntData):

    /li>
  3. 所以,@tmpTable包含一些数据。我需要运行用户定义的函数GetCnt(@status, @MsgTempTable),但我需要getCnt函数来访问@tmpTable数据。基本上我需要这样的东西:

    /li>
  4. 我试图定义@tableGetCnt用户定义的类型。

    /li>

但这给了我错误信息:

我认为我的想法是完全错误的。

0 投票
2 回答
175 浏览

sql - 使用 CASE 时的 SQL 性能问题

我有一个每秒返回大量数据并显示在网格中的 SP。我现在正在尝试减少带宽并考虑仅返回当前在我的网格中显示的列。

这当然是简化和最小化的,但基本上我所拥有的是以下 SP:

我目前正在尝试的是传递当前显示在网格上的字段(@fields)名称的 TVP,并仅返回必需的字段,如下所示:

我面临的问题是(正如所料)我的 SP 从 ~200 毫秒变为 ~1 秒

有什么办法可以重写它,以免它杀死我们?

我的王国!

0 投票
1 回答
2528 浏览

tsql - 具有来自 TVP 的多个值的 T-SQL UPSERT 表

我使用 SQL Server 2012 和 T-SQL 作为查询语言。

我需要帮助使用作为参数传递的一个 ID 值 (@userGroupID) 和许多函数 ID 来更新/插入 [cross_function_user] 中的多个列。它们是 C# 中的 List,并作为表值参数传递给 sproc - 只有一列 int,名为 Item。

首先,它当然会错误“子查询返回多个结果”,但是我缺乏重写它的技能,而且我不确定我的 upsert 是否以正确的方式编写。任何帮助将不胜感激。

0 投票
1 回答
3255 浏览

c# - 如何通过 Webmatrix.Data.Database.Query 将表值参数传递给存储过程

下面的 c# 代码是不言自明的。我想通过 WebMatrix.Data.Database.Query 将 DataTable 作为表值参数传递给 SQL Server 2008 中的存储过程,但在下面的 c# 代码的最后一行(即 appDatabase.Query)中抛出异常

“表类型参数 '0' 必须具有有效的类型名称。”

在数据库中,我使用这一位 TSQL 创建了一个用户定义的表类型

它执行得很好,并显示在 SQL Server Management Studio 的类型/用户定义的表类型下

这是存储的过程(仅添加相关部分以表明我已将正确的类型分配给 @roleIdsList 参数,并将其标记为 READONLY,这是表值参数所必需的)

我进行了大量搜索,但找不到处理 WebMatrix.Data.Database 的解决方案...我找到的所有解决方案都涉及 SqlCommand 和 SqlParameter。我在整个应用程序中都使用了 WebMatrix.Data.Database 并且需要保持一致。

请注意:我不使用 WebMatrix IDE。我只是在我的控制器中使用这个命名空间在我的 MVC4 应用程序中进行数据库交互。

急切地等待有这方面专业知识的人的指导。提前非常感谢。