如何在sql中创建具有多个字符串选择查询的过程?

时间:2016-12-13 04:36:16

标签: 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”

1 个答案:

答案 0 :(得分:0)

您必须通过别名引用@tempBatchSerial 这是@tempTables被引用或链接的唯一方式。

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

如果这不起作用,您可以尝试将@tempTable放在@vendorQuery文本中。