【问题标题】:Dynamic Table from stored procedure来自存储过程的动态表
【发布时间】:2014-03-12 18:29:59
【问题描述】:

我正在尝试从存储过程创建一个临时表,from this link

在字符串中他定义了 sql server 版本。从 2005 年到 2012 年,我们的客户拥有不同类型的 sql 服务器。

字符串:'SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;','EXEC getBusinessLineHistory'

如何独立于 sql server 平台使用该命令

【问题讨论】:

    标签: sql sql-server select stored-procedures


    【解决方案1】:

    OPENROWSET 创建一个到远程服务器的动态链接。

    http://technet.microsoft.com/en-us/library/ms190312.aspx

    您可以通过更改参数创建对动态链接的动态 TSQL 调用。下面是示例代码。这可以转换为带有 @my_Server 作为参数传递的存储过程。

    请注意,这不支持同时调用多个,因为只有一个表存在。

    您不能使用本地临时表,因为 EXEC 在存储过程中调用 sp_executesql 可能存在范围问题。

    这些是你需要研究的。

    -- Set the server info
    DECLARE @my_Server SYSNAME;
    SET @my_Server = 'Server=(local)\SQL2008';
    
    -- Clear the staging table
    truncate table STAGE.dbo.MYTABLE;
    
    -- Allow for dynamic server location
    DECLARE @my_TSQL NVARCHAR(2048);
    
    SET @my_TSQL =
    'INSERT INTO STAGE.dbo.MYTABLE SELECT * FROM OPENROWSET(''SQLNCLI'',' + @my_TSQL + 
    ';Trusted_Connection=yes;'', ''EXEC usp_My_Stored_Procedure'')';
    
    -- Run the dynamic remote TSQL
    exec sp_executesql @my_TSQL;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2016-09-07
      相关资源
      最近更新 更多