【问题标题】:Get result to temptable by execute OPENROWSET stored procedures with dynamic parameters in SQL?通过在 SQL 中执行带有动态参数的 OPENROWSET 存储过程来获取 temptable 的结果?
【发布时间】:2018-03-24 00:31:07
【问题描述】:

我使用的是 SQL Server 2012,我需要通过使用动态参数值执行存储过程来将结果保存到临时表中。

下面我展示了我的代码,当我执行代码时出现错误,那么在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 查询时,我得到这个错误:

消息 102,第 15 级,状态 1,第 5 行
'SET NOCOUNT ON;SET FMTONLY OFF;exec RDS_DS.dbo.Qry_GetParticipationDetails 52,' 附近的语法不正确

提前致谢

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    缺少引号。你能试试这个吗?

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

    【讨论】:

    • 嗨,这个答案执行成功,但我怎样才能得到那个诱人的结果,我试过 select * from #TempStamp_Status,但我得到“Msg 208, Level 16, State 0, Line 23 Invalid object name '#TempStamp_Status'。”
    • 您可以使用真实表而不是像 SELECT * INTO TempStamp_Status 这样的临时表,也可以使用像 ##TempStamp_Status 这样的全局临时表
    • 感谢您的帮助,您的回答成功了
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    相关资源
    最近更新 更多