我想用多个字符串选择查询创建过程。我想将数据插入表变量并将该临时表与其他表连接。
我不想将临时表创建为真实表。我想将数据插入内存临时表。
这是我的程序,
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 :(得分: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文本中。