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

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)
展开
 我来答
mailking2001
2008-12-02 · TA获得超过817个赞
知道小有建树答主
回答量:1037
采纳率:100%
帮助的人:743万
展开全部
你试过了吗?
这样建是允许的!!不过这样建的表属于本地临时表。当存储过程完成时,将自动删除在存储过程中创建的本地临时表。
可能是被删了你没看到

--------
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
这是个例子你可以运行了看看结果!!
qbowen
2008-12-02 · TA获得超过165个赞
知道答主
回答量:203
采纳率:0%
帮助的人:164万
展开全部
权限不够
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式