将数据从存储过程中的#temp表插入远程表

时间:2017-01-23 17:54:41

标签: azure stored-procedures

我在AZURE SQL数据库中有一个存储过程。因此需要将记录从#temp表插入到远程表中。 由于xxxx_table在远程数据库中使用了sp_execute_remote。

下面是

场景:

Create Procedure  SP1 parameter1, Parameter2
As

    select Distinct B.column1, B.Column2
    into #A
    from (Query1
          Union 
          Query2) B

    if (select count(1) from #A) > 0
    Begin

          Exec  sp_execute_remote @data_source_name = N'Remotedatabase',
          @stmt = N'INSERT INTO [dbo].[xxxx_table]
                    SELECT DISTINCT 
                    'xxx' AS 'column1',
                    'xxx as 'Column2',
                    'xxx' AS 'Column3',
                    'xxx' AS 'Column4',
                    'xxx' AS Column4
                    FROM #A A INNER JOIN table1 on A.Column1 = Table1.Column2'

    End 
    )

获取语法错误如下:

'xxx'附近的语法不正确。

我哪里错了?或者让我知道是否有另一种方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果你需要在SQL中动态构建一个字符串,则单引引整个句子,或者使用'一些文本' +'另一个文字'连续句子。如果您必须添加单引号,请使用双引号''

示例:

INSERT INTO SERVER.SCHEMA.TABLE_NAME
SELECT Something 
    FROM SERVER.SCHEMA.TABLE_NAME

<强>更新

如果您的表位于不同的数据库中但在同一服务器中使用:

constructor TMemoria.Create(dest, r1: integer);
begin
  inherited Create;
end;