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

SQLServer2000で@TABLEEXEC@queryに挿入

    N.B。 -この質問と回答は、2000バージョンのSQLServerに関連しています。それ以降のバージョンでは、INSERT INTO @table_variable ... EXEC ...の制限 解除されたため、それ以降のバージョンには適用されません。

    一時テーブルに切り替える必要があります:

    CREATE TABLE #tmp (code varchar(50), mount money)
    DECLARE @q nvarchar(4000)
    SET @q = 'SELECT coa_code, amount FROM T_Ledger_detail'
    
    INSERT INTO  #tmp (code, mount)
    EXEC sp_executesql (@q)
    
    SELECT * from #tmp
    

    ドキュメントから:

    テーブル変数はローカル変数のように動作します。明確に定義されたスコープがあります。これは、関数、ストアドプロシージャ、または宣言されたバッチです。

    その範囲内で、テーブル変数は通常のテーブルのように使用できます。これは、SELECT、INSERT、UPDATE、およびDELETEステートメントでテーブルまたはテーブル式が使用されている場所であればどこにでも適用できます。ただし、次のステートメントではテーブルを使用できません。

    INSERT INTO table_variable EXEC stored_procedure

    SELECT select_list INTO table_variable statements.



    1. 1つの表に行がない可能性がある複数の表からの選択によるOracleInsert

    2. 最後に挿入された行から値を取得するにはどうすればよいですか?

    3. TOPまたはLIMITを使用せずにTOP10行を取得しますか? –今週のインタビュー質問#247

    4. SQL Serverクエリの最大サイズ? IN句?より良いアプローチはありますか