【发布时间】:2014-10-17 16:27:19
【问题描述】:
我的场景是这样的,
CREATE PROCEDURE SP_1
AS
BEGIN
INSERT INTO #tmpTable(ID, Value)
VALUES(1, 1), (2, 2)
END
GO
CREATE PROCEDURE SP_2
AS
BEGIN
CREATE TABLE #tmpTable(ID INT, Value INT)
EXEC SP_1
SELECT * FROM #tmpTable
DROP TABLE #tmpTable
END
GO
EXEC SP_2
GO
DROP PROCEDURE SP_1
DROP PROCEDURE SP_2
我想将这个# 表替换为TABLE VARIABLE(@ 表)。
我尝试将表变量作为参数传递给 SP_1,但我应该将表变量作为只读参数传递。由于它是只读的,我无法插入到 SP_1 内的表变量中。有没有其他方法可以做到这一点?
【问题讨论】:
-
您将需要创建一个
TABLE TYPE然后声明该类型的参数,是的,它将是一个只读参数,但是您可以将数据放入参数中的另一个表变量或临时表中并用它做任何你想做的事情。
标签: sql sql-server sql-server-2008 sql-server-2005 stored-procedures