sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2012:動的 SQL 制限 (> 4000 文字) (分割)

    テキストをパーツに分割する必要はありません。 文字列の連結 :

    そのため、最初の連結が大きな値の型で機能する (したがって、結果として大きな値の型が生成される) ことを確認し、後続のすべての連結は切り捨てから保存する必要があります:

    set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...
    

    (この方法では、変換をどこにでも挿入する必要はありません )

    これによりエラーが発生します:

    declare @t nvarchar(max)
    
    set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
    
    exec sp_executesql @t
    

    そして、これは結果 9000 を生成します:

    declare @t nvarchar(max)
    
    set @t = CONVERT(nvarchar(max),'select LEN(''') + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
    
    exec sp_executesql @t
    


    1. 最適化フェーズと逃した機会

    2. Oracleのユーザーが使用するリソースを抑制または制限する方法はありますか?

    3. MicrosoftAccessポッドキャストエピソード1を聞く

    4. Ubuntu 9.10(Karmic)でphpMyAdminを使用してMySQLを管理する