【问题标题】:Stored procedure in Redshift to load data into a tableRedshift中的存储过程将数据加载到表中
【发布时间】:2020-04-11 21:19:07
【问题描述】:

我有一个 sql 查询,它从 4 个表中获取数据,我想使用这个脚本将数据加载到 Redshift 中的另一个表中,我正在尝试创建一个存储过程,但我不断收到错误。下面是我的脚本。

CREATE or replace PROCEDURE ABC1 (SOURCE_SYS CHAR(3), FILE_NBR BIGINT)
AS
BEGIN
  INSERT INTO SP1 (SOURCE_SYS,FILE_NBR)
  VALUES(
    SELECT 'WT', PK_ORDERNO
    FROM table_1
    JOIN table_2 ON table_1.file_nbr = table_2.file_nbr
    LEFT OUTER JOIN table_3 ON table_2.file_nbr = table_3.file_nbr
  )
END;

【问题讨论】:

  • 语法是INSERT INTO SP1(...) SELECT ... FROM ...(所以没有VALUES())。不过,目前还不清楚您要做什么。看起来查询实际上并没有使用过程的参数。请提供样本数据、期望的结果以及您的目的说明。
  • 我有 2 个表表 1 和表 2。现在我创建了另一个表 Tablenew。这个 tablenew 将从连接 table1 和 table2 的 sql 语句中获取数据。现在我想创建一个 sp 将数据插入 tablenew。

标签: sql stored-procedures amazon-redshift sql-insert


【解决方案1】:

你应该这样做:

CREATE OR REPLACE PROCEDURE ABC1 (SOURCE_SYS CHAR(3),FILE_NBR BIGINT)
AS $$
BEGIN


    INSERT INTO SP1 (SOURCE_SYS,FILE_NBR)

    SELECT 'WT',PK_ORDERNO FROM 
    table_1 join table_2 on table_1.file_nbr=table_2.file_nbr
    left outer join
    table_3 on table_2.file_nbr = table_3.file_nbr ;

END;
$$ LANGUAGE plpgsql;

【讨论】:

  • 我收到以下错误。[Amazon](500310) 无效操作:“$1”或附近的语法错误;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
相关资源
最近更新 更多