Sql server 2008 将openrowset方法的结果移动到sql中的临时表中
与 我犯了这样的错误 无效的对象名称“#报告_1”Sql server 2008 将openrowset方法的结果移动到sql中的临时表中,sql-server-2008,Sql Server 2008,与 我犯了这样的错误 无效的对象名称“#报告_1” 请提前向我表示感谢。您可以这样尝试,删除动态SQL并通过在openrowset语句中直接包含测试变量值使其成为静态。 声明@parameter uniqueidentifier 方法1 DECLARE @testVariable uniqueidentifier; SET @testVariable ='c0cad38f-da93-46b5-9f90-ff9eea7dbfd8'; DECLARE @qry varchar(2000);
请提前向我表示感谢。您可以这样尝试,删除动态SQL并通过在openrowset语句中直接包含测试变量值使其成为静态。 声明@parameter uniqueidentifier 方法1
DECLARE @testVariable uniqueidentifier;
SET @testVariable ='c0cad38f-da93-46b5-9f90-ff9eea7dbfd8';
DECLARE @qry varchar(2000);
SET @qry = 'SELECT * into #REPORT_1 FROM OPENROWSET
( ''SQLNCLI'',
''Server=localhost;Trusted_Connection=yes;'',
'' SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 ''''' + cast(@testVariable as varchar(100)) + ''''''')'
exec(@qry)
select * from #REPORT_1
方法2
单独创建#Report_1临时表,然后插入exec。。如下图所示
SELECT *
INTO #REPORT_1
FROM OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;', ' SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 @parameter')
SELECT *
FROM #REPORT_1
方法3
Create table #REPORT_1
(
col datatype1,
...
...
)
DECLARE @testVariable UNIQUEIDENTIFIER;
SET @testVariable = 'c0cad38f-da93-46b5-9f90-ff9eea7dbfd8';
DECLARE @qry VARCHAR(2000);
SET @qry = 'SELECT * FROM OPENROWSET
( ''SQLNCLI'',
''Server=localhost;Trusted_Connection=yes;'',
'' SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 ''''' + cast(@testVariable AS VARCHAR(100)) + ''''''')'
Insert into #REPORT_1 (col,....)
EXEC (@qry)
select *from #REPORT_1
这很有效
这不管用
为什么…?因为exec语句在当前会话之外的单独会话上下文中执行。@Gopal Yadav:我更新了我的答案,请参考方法-2Tank u,但我需要不创建临时表的解决方案。将结果直接移动到临时表中,
DECLARE @testVariable UNIQUEIDENTIFIER;
SET @testVariable = 'c0cad38f-da93-46b5-9f90-ff9eea7dbfd8';
DECLARE @qry VARCHAR(2000);
SET @qry = 'SELECT * FROM OPENROWSET
( ''SQLNCLI'',
''Server=localhost;Trusted_Connection=yes;'',
'' SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 ''''' + cast(@testVariable AS VARCHAR(100)) + ''''''')'
SELECT *
INTO #REPORT_1
EXEC (@qry)
SELECT *
FROM #REPORT_1
select * into #temp_my1 from openrowset
('SQLNCLI','Server=DEV-WKST-136;Trusted_Connection=yes;', 'EXEC performancev3.dbo.usp_testa')
select * from #temp_my1
declare @query nvarchar(4000)
set @query='select * into #temp_my2 from openrowset
(''SQLNCLI'',''Server=DEV-WKST-136;Trusted_Connection=yes;'', ''EXEC performancev3.dbo.usp_testa'')'
exec(@query)
select * from #temp_my2