2010-02-02 64 views
1

我在SQL Server 2000下面的查询工作不工作执行一个存储过程将记录插入到表 - SQL Server 2000中

declare @TempAccountKey Table (AccKey int,SitName varchar(1000),SitKey int) 
insert into @TempAccountKey(AccKey,AccName) 
exec [usp_Get_AccountForUser] @UserName 

它引发错误

EXECUTE在插入表变量时不能用作源。

任何想法?

#1


链接服务器的设置是否正确。如果我执行以下查询

exec [ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser] 

它显示错误'找不到存储过程'。

任何想法?

NLV

回答

3

使用临时表,而不是

CREATE TABLE #TempSiteKey (AccKey int,SitName varchar(1000),SitKey int) 

insert into #TempSiteKey (AccKey,AccName) 
exec [usp_Get_AccountForUser] @UserName 

DROP TABLE #TempSiteKey 

而且你不能调用程序的原因是因为你已经界定它不正确

exec [ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser] 

实际上意味着执行过程称为'ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser'。

你想要的是:

exec [ABC-SQL-PROD].[DBabc].[dbo].[usp_Get_ABCForUser] 
+0

广东话我做,与不使用临时表的表变量?我能够在sql server 9.0中完美运行这些代码。那么这是否意味着8.0不会支持这个? – NLV 2010-02-02 11:09:41

+0

正确。我没有意识到他们最终加入了这个;它绝对不能在SQL 2K中使用表变量。 – Joe 2010-02-02 11:30:20

+0

如果您只是检索1行,您可能需要考虑使用OUTPUT参数而不是返回结果集。 – 2010-02-02 11:46:18

相关问题