с
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
Получавам такава грешка
Невалидно име на обект "# REPORT_1".
Моля, дайте ми благодарности предварително.
Отговори:
0 за отговор № 1Можете да опитате по този начин, да премахнете динамичния SQL и да го направите статичен, като включите тестовата променлива стойност директно в изявлението на openrowset. декларирам @parameter uniqueidentifier
Метод-1
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
Метод 2
Създайте своя временна таблица # Report_1 отделно, след това направете Insert in exec .. както е показано по-долу.
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
Метод 3
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
0 за отговор № 2
Това работи
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
Защо ...? Тъй като изпълнителните декларации се изпълняват в отделен контекст на сесията, различен от текущата ви сесия.