关于在存储过程中建立临时表

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:53:54
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)

你试过了吗?
这样建是允许的!!不过这样建的表属于本地临时表。当存储过程完成时,将自动删除在存储过程中创建的本地临时表。
可能是被删了你没看到

--------
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
这是个例子你可以运行了看看结果!!

权限不够