SQL 服务器链接服务器插入
SQL Server Linked Server INSERT INTO
我在存储过程中遇到链接服务器问题,我想从链接服务器获取数据然后插入 table。
这是我的存储过程:
CREATE PROCEDURE [dbo].[SP_GETPRODRECORD]
@PR_NO varchar(10)=''
AS
BEGIN
DECLARE @OPENQUERY nvarchar(4000),
@TSQL nvarchar(4000),
@LinkedServer nvarchar(4000)
CREATE TABLE AAA (PR varchar(10))
SET @LinkedServer = 'LS'
SET @OPENQUERY = 'INSERT INTO AAA SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT PSHN9G FROM F9G00 WHERE PSHN9G='''''+@PR_NO+''''')'
EXEC (@OPENQUERY+@TSQL)
END
我的问题是 EXEC
不是 运行,当我尝试使用下面的代码手动插入时有效
INSERT INTO AAA(PR)
SELECT PSHN9G
FROM OPENQUERY(WAVEDLIB,'SELECT PSHN9G FROM F9G00 WHERE PSHN9G=''XXXXXXX'')
我是不是漏掉了什么?
谢谢
不需要使用OPENQUERY
和EXECUTE
,如果你知道你的table是哪个数据库,你可以简单地引用LinkedServer:
CREATE PROCEDURE [dbo].[SP_GETPRODRECORD]
@PR_NO varchar(10)=''
AS
BEGIN
--No need to CREATE TABLE every time you exec SP. SELECT INTO #temp table instead.
SELECT PSHN9G INTO #temp FROM WAVEDLIB.DBName.dbo.F9G00 WHERE PSHN9G=@PR_NO
SELECT * FROM #temp
END
我在存储过程中遇到链接服务器问题,我想从链接服务器获取数据然后插入 table。
这是我的存储过程:
CREATE PROCEDURE [dbo].[SP_GETPRODRECORD]
@PR_NO varchar(10)=''
AS
BEGIN
DECLARE @OPENQUERY nvarchar(4000),
@TSQL nvarchar(4000),
@LinkedServer nvarchar(4000)
CREATE TABLE AAA (PR varchar(10))
SET @LinkedServer = 'LS'
SET @OPENQUERY = 'INSERT INTO AAA SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT PSHN9G FROM F9G00 WHERE PSHN9G='''''+@PR_NO+''''')'
EXEC (@OPENQUERY+@TSQL)
END
我的问题是 EXEC
不是 运行,当我尝试使用下面的代码手动插入时有效
INSERT INTO AAA(PR)
SELECT PSHN9G
FROM OPENQUERY(WAVEDLIB,'SELECT PSHN9G FROM F9G00 WHERE PSHN9G=''XXXXXXX'')
我是不是漏掉了什么?
谢谢
不需要使用OPENQUERY
和EXECUTE
,如果你知道你的table是哪个数据库,你可以简单地引用LinkedServer:
CREATE PROCEDURE [dbo].[SP_GETPRODRECORD]
@PR_NO varchar(10)=''
AS
BEGIN
--No need to CREATE TABLE every time you exec SP. SELECT INTO #temp table instead.
SELECT PSHN9G INTO #temp FROM WAVEDLIB.DBName.dbo.F9G00 WHERE PSHN9G=@PR_NO
SELECT * FROM #temp
END