问题标签 [sp-executesql]
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.
sql-server - 批量插入作为动态 sql 失败
我在设置批量插入的 SP 中有此代码:
在我的存储过程中,失败并出现以下错误:
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行。
但是打印出来的代码:
奇迹般有效。我不知道为什么它在sp_executesql
.
tsql - sp_executesql vs 用户定义的标量函数
在下表中,我存储了一些这样的条件:
然后,一般来说,在第二张表中,我有以下记录:
我需要的是使用正确的条件比较这些值并存储结果(让我们在附加列中说“0”表示假,“1”表示真)。
我将在存储过程中执行此操作,基本上我将比较几条到数百条记录。
什么可能的解决方案是使用 sp_executesql 为每一行构建动态语句,另一个是创建我自己的标量函数并使用交叉应用将其调用为 eacy 行。
谁能告诉哪个是更有效的方法?
注意:我知道回答这个问题的最好方法是制作两个解决方案并进行测试,但我希望可以根据缓存和 SQL 内部优化等其他内容来回答这个问题,这将为我节省很多时间,因为这只是更大问题的一部分。
sql-server - Try & Catch 中的 sp_executesql
当表 T1 在 MyLinkedServer 中不存在而不是被定向到 Catch 部分时,上述脚本将失败。我想念什么?
只是要清楚一点:原始过程使用参数在过程内部动态构造@SQL。
谢谢!
stored-procedures - 需要帮助来调试具有存储在表中的 sql 脚本的 T-SQL 存储过程
在这个存储过程中,我从名为M_SopInsert
.
SQLScript
是列名,并且此表中的每条记录都包含一个执行UPDATE
,INSERT
或的 SQL 查询DELETE
。
当我使用 Select 调试它时,我可以看到实际的脚本(在下面评论)。但是脚本本身没有执行,我没有看到任何错误。
我尝试对UPDATE
下面的语句进行硬编码,它工作正常。
这里可能是什么问题?
sql - sp_executesql 和表输出
我正在 SQL Server 2005 中编写一个存储过程,在给定点我需要执行另一个存储过程。这个调用是动态的,所以我像往常一样使用了 sp_executesql 命令:
但我得到这个错误:
必须声明标量变量“@tempTable”。
如您所见,该变量已声明。我已经阅读了文档,似乎只允许使用 text、ntext 和 image 参数。我怎样才能拥有我需要的东西?
PS:我发现了许多关于 2008 年和更高版本的提示,包括 2005 年的任何提示。
excel - 如何让 Excel 从工作表上的查询表中可靠地执行 sp_executesql?
在 MS Excel 中,如果您使用 Microsoft Query 创建 QueryTable,并且您的 SQL 查询无法通过 Microsoft Query 直观呈现,则不允许为该查询提供参数。真可惜,所以有一种很棒的技术可以允许参数:
您以 ODBCCALL
形式提供查询,它使用参数。
除非它没有。
虽然在某些计算机上它可以完美运行,但在其他计算机上,Excel 在尝试刷新查询表时会引发错误:
- 对于 SQL Native Client 10:
Invalid parameter number
- 对于 SQL Native Client 11:
Procedure or function sp_executesql has too many arguments specified.
使用分析器,我可以看到 Excel(实际上是被 Excel 戳的本机客户端)在实际执行之前正在执行此操作sp_executesql
:
这@p1
是应该sp_executesql
稍后使用的参数占位符,这就是sp_describe_undeclared_parameters
失败的地方。它不期望任何自定义参数sp_executesql
- 只有两个内在参数@stmt
和@params
. 如果我从查询中手动删除该,@p1
位,它在所有情况下都可以正常执行。
这就是问题所在:在某些计算机上,上述自动生成的内容sp_describe_undeclared_parameters
与不必要/错误的,@P1
位一起使用,而在某些计算机上却失败了。
我们需要让它在所有计算机上工作。
奇怪的事情要考虑:
- 在没有问题的计算机中,我看不到任何常见的东西。位数或 Windows 版本似乎无关紧要。
- 我无法在附加位的情况下手动执行上述查询
,@P1
- 无论我使用什么工具,我都会收到“参数过多”错误,但是,Excel 能够在感觉时执行它没有问题。我可以通过探查器看到命中服务器的确切查询。也许它与连接设置的一个非常特殊的组合有关,但它们在所有计算机上似乎都是相同的(数据源是使用 SQL Server Native Client 11 的 ODBC 系统数据源,并且所有选项卡上的所有参数都相同)计算机)。
sql-server-2005 - sp_executesql 或 exec(@var) 太长。最大长度为 8000
我有大量查询,所以我不能按规则在生产中使用链接服务器。我通过了一个varchar(max)
超过 8000 个字符的。
但sp_executesql
不支持超过 8000 个字符,那么我该如何执行我的字符串?
sql-server-2008-r2 - 将 sp_executeSQL 的参数值部分指定为参数
我正在使用 SQL Server 2008 R2。我需要为下面的 T-SQL 的最后一部分使用一个参数。
在这一部分中,指定了 sp_executesql 的参数值,但我想动态地提供它。
sql - 具有可变数量参数的 EXEC sp_executesql
我正在尝试实现用户可自定义的搜索,最后我进入了 SQL 部分。用户可以选择可变数量的标准,然后我将所有内容发送到表值参数中的存储过程。我想出了如何创建 sql 字符串的逻辑,但我被困在发送参数的部分。一个伪代码示例是:
我的问题是如何设置参数,当我不知道它们有多少时?
sql-server - 跳过(或不提供可选参数)
如何跳过(或不提供可选参数)Database.ExecuteSqlCommand
?
我尝试了以下没有任何运气..它仍然希望我提供@Frequency
参数
和
编辑:
将来,“@Frequency”参数将从存储过程中完全删除。仍有一些遗留应用程序仍在提供,@Frequency
并且无法在所有应用程序中更改它。新创建的应用程序不会提供@Frequency