【问题标题】:How do I execute a very long dynamic sql statement on SQL Server 2000?如何在 SQL Server 2000 上执行很长的动态 sql 语句?
【发布时间】:2010-07-22 09:47:06
【问题描述】:

我生成了一个大约 25k 个字符长的 sql 字符串选择语句。不幸的是,生产服务器是 SQL 2000。
将字符串分解为 4k nvarchars 是我唯一的选择吗?

--ex.
DECLARE @s1 NVARCHAR(4000)
DECLARE @s2 NVARCHAR(4000)
DECLARE @s3 NVARCHAR(4000)
DECLARE @s4 NVARCHAR(4000)
DECLARE @s5 NVARCHAR(4000)
DECLARE @s6 NVARCHAR(4000)
DECLARE @s7 NVARCHAR(4000)

--fill nvarchars

EXEC @s1 + @s2 + @s3 + @s4 + @s5 + @s6 + @s7

【问题讨论】:

  • 我之前发布过这个,stackoverflow.com/questions/3190423/… 但解决方案是针对 sql server 2005。
  • 我将建议发布部分以查看是否可以使用 WITH 语句最小化查询,但它们在 2000 年不受支持 :( 有没有办法不能以某种方式修剪?我发现Oracle 的动态 SQL 在解释空白/空格字符的方式上存在问题...
  • 嗯,也许我可以为结果创建一个临时表并一一添加列...
  • 该死的,我必须一一更新行。

标签: sql-server tsql sql-server-2000 dynamic-sql


【解决方案1】:

试试这个:

CREATE PROCEDURE DynamicSQLExec
   @SQL ntext
AS
EXEC (@SQL)

您不能声明文本局部变量,但您可以将其作为存储过程的参数。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2020-05-27
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多