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

動的SQLの結果を変数に割り当てます

    sp_executesqlを出力パラメータとともに使用できます。

    declare @S nvarchar(max) = 'select @x = 1'
    
    declare @xx int
    set @xx = 0
    
    exec sp_executesql @S, N'@x int out', @xx out
    
    select @xx
    

    結果:

    (No column name)
    1
    

    編集

    私のサンプルでは@S @templateの代わりに 。ご覧のとおり、@xに値を割り当てています したがって、@templateを変更する必要があります そのため、sp_executesqlの2番目の引数で定義した変数にコンマ区切りの文字列を内部的に割り当てます。 。私のサンプルでは、​​N'@x int out' 。おそらくvarchar(max)が必要です 出力パラメータ。 N'@Result varchar(max) out'のようなもの

    これは、master..spt_values

    からコンマ区切りの文字列を作成する別の例です。
    declare @template nvarchar(max)
    set @template = 
    'select @Result += cast(number as varchar(10))+'',''
    from master..spt_values
    where type = ''P''
    '
    
    declare @CommaString varchar(max)
    set @CommaString = ''
    
    exec sp_executesql @template, N'@Result varchar(max) out', @CommaString out
    
    select @CommaString
    


    1. SQLクエリの実行順序

    2. MySQLで日付範囲の重複を確認する

    3. PostgreSQL-データベースの名前を変更

    4. Postgres:タイムスタンプを最も近い分に切り上げるまたは切り下げるにはどうすればよいですか?