SQL 服务器:输出参数到 table

SQL Server: Output parameter to table

我有下T-SQL代码:

DECLARE @A CHAR(1)
DECLARE @B CHAR(10)
DECLARE @C DECIMAL
DECLARE @D CHAR(1)

SET @A = 'S'
SET @B = '2015-03-23'
SET @C = 1
SET @D = 'P'

EXEC('CALL DATA_COLLECTOR(?,?,?,?)',@A, @B, @C, @D) at LINKED_SERVER_10

PRINT @D

@D是输入输出变量

在运行代码之后,变量@D得到一个结果集(5行,10列)。

如何将@D 中包含的结果集复制到数据库中的另一个table?

提前致谢。

要从变量创建新的 table,请使用

SELECT * INTO newTable FROM @D

要将数据放入现有 table,请使用

INSERT INTO existingTable SELECT * FROM @D

你的输出不能是CHAR(1)

如果您忽略 @D 并且只想将过程的结果集存储到 table,那么您几乎没有选择:

  1. Table之前已创建

    CREATE TABLE #Table (Field1 INT, Field2 VARCHAR(50));
    INSERT INTO #Table
    EXEC yourProcedure
    

查看结果

    SELECT *
    FROM #Table
  1. 在运行时使用 OPENROWSET

    创建 table
    sp_configure 'Show Advanced Options', 1
    GO
    RECONFIGURE
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1
    GO
    RECONFIGURE
    
    SELECT * INTO #Table
    FROM OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;',
    'EXEC tempdb.dbo.yourProcedure')
    

查看结果

    SELECT *
    FROM #Table