我有2个商店程序:
第一个创建#TempTable
CREATE PROCEDURE CreateTempTable
AS
BEGIN
IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL
BEGIN
DROP TABLE #TempTable;
END
CREATE TABLE #TempTable(
Value real NOT NULL
END
第二个在我的#TempTable
中插入数据 CREATE PROCEDURE InsertData
@Value real
AS
BEGIN
INSERT #TempTable (Value) VALUES @Value
END
当我调用这些程序时,我有一个错误:
exec CreateTempTable
exec InsertData" 1
go
名称'#TempTable'在InsertData中无效
你能帮助我吗?
答案 0 :(得分:2)
在sproc结束后,sproc内部创建的临时表会自动删除。
您有几个选择:
答案 1 :(得分:1)
我想这里的问题是您正在创建一个本地临时表,无法在CreateTempTable
之外访问。您应该使用##
而不是#
创建全局临时表。
编辑是的,就是这样。这是你的固定脚本:
CREATE PROCEDURE CreateTempTable
AS
BEGIN
IF OBJECT_ID('tempdb..##TempTable') IS NOT NULL
BEGIN
DROP TABLE ##TempTable;
END
CREATE TABLE ##TempTable(
Value real NOT NULL
)
END
GO
CREATE PROCEDURE InsertData
@Value real
AS
BEGIN
INSERT ##TempTable (Value) VALUES (@Value)
END
GO
exec CreateTempTable
exec InsertData 1
go