通过在SQL中使用动态参数执行OPENROWSET存储过程来获取结果为temptable?

时间:2017-10-12 07:00:44

标签: sql sql-server

我正在使用SQL Server 2012,我需要通过执行带有动态参数值的存储过程将结果发送到temp-table。

下面我展示了我的代码,当我执行代码时出现错误,因此在openrowset执行存储过程或类似的事情时,是否可以使用动态参数进行输出?

SET @sql = N'SELECT * INTO #TempStamp_Status       
             FROM OPENROWSET(''SQLNCLI'',
        ''Admin-SERVER\SQLEXPRESS'' ; ''sa'' ; ''123456''
        ''SET NOCOUNT ON;SET FMTONLY OFF;exec 
RDS_DS.dbo.Qry_GetParticipationDetails ' + cast( @ResidentId AS 
NVARCHAR(10))   + ',''' +CAST(@StartDate AS NVARCHAR(100)) +''',''' 
+CAST(@EndDate AS NVARCHAR(100)) +''')''';

当我执行此SQL查询时,出现此错误:

  

Msg 102,Level 15,State 1,Line 5
  ' SET NOCOUNT ON附近语法不正确; SET FMTONLY OFF; exec RDS_DS.dbo.Qry_GetParticipationDetails 52,'

提前致谢

1 个答案:

答案 0 :(得分:2)

缺少报价。你能试试吗?

SET @sql = N'SELECT * INTO #TempStamp_Status       
             FROM OPENROWSET(''SQLNCLI'',
        ''Admin-SERVER\SQLEXPRESS'' ; ''sa'' ; ''123456'',
        ''SET NOCOUNT ON;SET FMTONLY OFF;exec 
RDS_DS.dbo.Qry_GetParticipationDetails ' + cast( @ResidentId AS 
NVARCHAR(10))   + ',''''' +CAST(@StartDate AS NVARCHAR(100)) +''''',''''' 
+CAST(@EndDate AS NVARCHAR(100)) +''''''')';