【发布时间】:2011-08-01 19:55:49
【问题描述】:
我在 MSSQL 2008 中有一个存储过程,在其中我创建了一个临时表,然后我在临时表中执行了几次插入。 如何在存储过程之外选择临时表的所有列?我的意思是,我有这个:
CREATE PROCEDURE [dbo].[LIST_CLIENTS]
CREATE TABLE #CLIENT(
--Varchar And Numeric Values goes here
)
/*Several Select's and Insert's against the Temporary Table*/
SELECT * FROM #CLIENT
END
在另一个查询中我正在这样做:
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
SELECT *
INTO #CLIENT
FROM OPENROWSET
('SQLOLEDB','Server=(local);Uid=Cnx;pwd=Cnx;database=r8;Trusted_Connection=yes;
Integrated Security=SSPI',
'EXEC dbo.LIST_CLIENTS ''20110602'', NULL, NULL, NULL, NULL, NULL')
但我得到这个错误:
Msg 208, Level 16, State 1, Procedure LIST_CLIENTS, Line 43
Invalid object name '#CLIENT'.
我尝试过使用全局临时表,但它不起作用。 我知道这是临时表的范围,但是,我怎样才能让表超出 SP 的范围?
提前致谢
【问题讨论】:
-
能否请您用您正在使用的 SQL Server 版本标记问题?另外,如果您使用的是受信任的连接,为什么要传递 uid 和 pwd?
-
你知道全局临时表是用##声明的吗?
标签: sql sql-server tsql sql-server-2008