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,那么您几乎没有选择:
Table之前已创建
CREATE TABLE #Table (Field1 INT, Field2 VARCHAR(50));
INSERT INTO #Table
EXEC yourProcedure
查看结果
SELECT *
FROM #Table
在运行时使用 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
我有下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,那么您几乎没有选择:
Table之前已创建
CREATE TABLE #Table (Field1 INT, Field2 VARCHAR(50)); INSERT INTO #Table EXEC yourProcedure
查看结果
SELECT *
FROM #Table
在运行时使用
创建 tableOPENROWSET
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