代码之家  ›  专栏  ›  技术社区  ›  a432511

表名为参数且查询长度超过4000个字符的SQL

  •  3
  • a432511  · 技术社区  · 15 年前

    到目前为止,我所了解的情况如下:

    CREATE PROCEDURE [dbo].[myprocedure]
        @tableName sysname
    AS
    DECLARE @cmd nvarchar(4000)
    SET @cmd = N' Select blah blah from ' + @tableName
    EXEC (@cmd)
    GO
    

    该查询在理论上可以工作,但我的问题是我的查询长度超过4000个字符。在长度超过4000个字符(nvarchar的最大值)的cmd变量中使用@tableName还有其他方法吗?

    4 回复  |  直到 15 年前
        1
  •  8
  •   Heinzi    15 年前

    如果使用SQL Server>=2005年,尝试替换 nvarchar(4000) 具有 nvarchar(MAX) .

        2
  •  3
  •   Remus Rusanu    15 年前
    DECLARE @cmd NVARCHAR(MAX);
    
        3
  •  2
  •   recursive    15 年前

    将一些逻辑提取到视图或用户定义的函数中。

        4
  •  0
  •   Baby Groot Duleendra    12 年前

    DECLARE @cmd VARCHAR(8000)
    

    而不是 DECLARE @cmd NVARCHAR(MAX);

    NVARCHAR(MAX) ALLOWS ONLY 4000 CHARACTERS.