所以我已经阅读了这些帖子
然后我提出了这个解决方案
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
alter procedure [CP24SHOP].[spSearch_DitoNr_OemNr_EngineType]
@user nvarchar(255),
@ditoNr int,
@oemNr nvarchar(255) = null,
@engineType nvarchar(255) = null
as
begin
if(@oemNr is null and @engineType is null)
exec CP24SHOP.spSearchDitoNr
@user = @user,
@ditoNr = @ditoNr
else
begin
declare @sql nvarchar(max) = 'SELECT *
FROM OPENROWSET(
''SQLNCLI'',
''Server=localhost\ISTABGLOBAL;Trusted_Connection=yes;'',
''exec CP24SHOP.spSearchDitoNr
@user = ' + @user + ',
@ditoNr = ' + @ditoNr + ''')'
--exec (@sql)
SELECT * INTO #TempTable FROM (@sql) -- Line 33
where OEMNumber = @oemNr
end
end
return 0;
然而,在运行此脚本时,我收到以下错误:
消息102,级别15,状态1,过程spSearch_DitoNr_OemNr_EngineType,第33行
')'附近的语法不正确。
任何关于我的语法错误的想法都会导致我这是一个新的领域
修改
我尝试做的是调用存储过程CP24SHOP.spSearchDitoNr
,然后只选择那些OEMNumber = @oemNr
答案 0 :(得分:1)
您无法使用SELECT * INTO #TempTable FROM (@sql)
,因为@sql
是nvarchar(max)
。您需要将OPENROWSET
查询中的值保存到表格中。
有关详细信息,请查看this post。您可以使用INSERT INTO myTable EXEC sp_executesql(@sql)
。