关于在存储过程中建立临时表
createproctest1@bchar(1)asEXEC('CREATETABLE#TEMP(NAMEVARCHAR(20),RDfloat)')这样写是可以的,但是...
create proc test1 @b char(1)
as
EXEC('CREATE TABLE #TEMP (NAME VARCHAR(20),RD float) ')
这样写是可以的,但是像下面这样写就不行了 ,为什么?
create proc test1 @b char(1)
as
CREATE TABLE #TEMP (NAME VARCHAR(20),RD float) 展开
as
EXEC('CREATE TABLE #TEMP (NAME VARCHAR(20),RD float) ')
这样写是可以的,但是像下面这样写就不行了 ,为什么?
create proc test1 @b char(1)
as
CREATE TABLE #TEMP (NAME VARCHAR(20),RD float) 展开
2个回答
展开全部
你试过了吗?
这样建是允许的!!不过这样建的表属于本地临时表。当存储过程完成时,将自动删除在存储过程中创建的本地临时表。
可能是被删了你没看到
--------
CREATE PROCEDURE dbo.Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (2);
SELECT Test2Col = x FROM #t;
GO
CREATE PROCEDURE dbo.Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (1);
SELECT Test1Col = x FROM #t;
EXEC Test2;
GO
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (99);
GO
EXEC Test1;
GO
这是个例子你可以运行了看看结果!!
这样建是允许的!!不过这样建的表属于本地临时表。当存储过程完成时,将自动删除在存储过程中创建的本地临时表。
可能是被删了你没看到
--------
CREATE PROCEDURE dbo.Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (2);
SELECT Test2Col = x FROM #t;
GO
CREATE PROCEDURE dbo.Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (1);
SELECT Test1Col = x FROM #t;
EXEC Test2;
GO
CREATE TABLE #t(x INT PRIMARY KEY);
INSERT INTO #t VALUES (99);
GO
EXEC Test1;
GO
这是个例子你可以运行了看看结果!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询