Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 将openrowset方法的结果移动到sql中的临时表中_Sql Server 2008 - Fatal编程技术网

Sql server 2008 将openrowset方法的结果移动到sql中的临时表中

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);

我犯了这样的错误

无效的对象名称“#报告_1”


请提前向我表示感谢。

您可以这样尝试,删除动态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