SQL Server链接服务器INSERT INTO

时间:2018-02-01 02:13:44

标签: sql sql-server stored-procedures linked-server

我在商店程序中遇到链接服务器的问题,我想从链接服务器获取数据然后插入表。

这是我的存储过程:

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

我错过了什么吗?

由于

1 个答案:

答案 0 :(得分:3)

无需使用OPENQUERYEXECUTE,如果您知道哪个数据库是您的表,则可以简单地引用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