2016-12-13 13 views
0

複数の文字列選択クエリを持つプロシージャを作成したいと思います。テーブル変数にデータを挿入し、その一時テーブルを他のテーブルに結合したいとします。
私は、テンポラリテーブルを実際のテーブルとして作成したくありません。私はメモリの一時テーブルにデータを挿入したい。テーブル変数を宣言する必要がありますの手順を表示するエラーメッセージを実行するとここで複数の文字列を含むプロシージャをSQLで選択する方法

CREATE PROCEDURE sp_TempBatch 
    AS 
    DECLARE @TempBatchSerial TABLE 
     (
     ID   int, 
     Name  nvarchar(200), 
     StockType nvarchar(50), 
     ItemNo  nvarchar(50) 
    ) 

    DECLARE @TempQuery as nvarchar(MAX)='', 
      @VendorQuery as nvarchar(MAX)='' 
BEGIN 

    SET @TempQuery='SELECT ID,Name,' 

    IF StockType = '1' 
    BEGIN 
     SET @TempQuery += ' ''Batch'' as StockType,' 
    END 
    ELSE 
    BEGIN 
     SET @TempQuery += ' ''Serial'' as StockType,' 
    END 

    SET @TempQuery += 'ItemNo INTO @TempBatchSerial 
         FROM Stock' 

    EXEC (@TempQuery) 

    SET @VendorQuery+=' SELECT @TempBatchSerial.* FROM @TempBatchSerial 
         INNER JOIN Vendor 
         ON @TempBatchSerial.ID = Vendor.ID 
         INNER JOIN Partner 
         ON Vendor.parentid = Partner.syskey' 
    EXEC (@VendorQuery) 
END 

、私の手順である「@TempBatchSerial」

+0

どのdbmsを使用していますか? (そのコードはANSI SQLコミラントからは遠いです。) – jarlh

答えて

0

あなただけのエイリアス 経由@tempBatchSerialを参照する必要がway @tempTablesは参照またはリンクできます。

SELECT T.* FROM @TempBatchSerial T 
        INNER JOIN Vendor 
        ON T.ID = Vendor.ID 
        INNER JOIN Partner 
        ON Vendor.parentid = Partner.syskey 

これでうまくいかない場合は、@tempTableを@vendorQueryテキストに配置してみてください。

関連する問題