【问题标题】:Generic procedure in aws Redshift dbaws Redshift db中的通用过程
【发布时间】:2020-06-04 06:55:06
【问题描述】:

我正在尝试在 AWS Redshift DB 中开发通用过程,它可以接受表名、架构名称作为输入参数,并在调用我得到的过程时:

SQL 错误 [500310] [42601]:亚马逊无效操作:语法错误

我的程序是:

 CREATE OR REPLACE PROCEDURE purgingtbl(vschema IN  VARCHAR,
                                        vtable  IN VARCHAR,
                                        columnname IN VARCHAR)
AS $$
DECLARE
 Srcedate            VARCHAR(15);

BEGIN
    Raise info 'vschema = %, vtable = %,columnname = %', vschema,vtable,columnname;

select into Srcedate count(*) from 'vschema'.'vtable' where src_proc_dt < (Current_date - 90) and 'columnname' is NOT NULL;
     ---RAISE INFO 'Date in  Landingzone table greater than 90 days is = %', Srcedate;

END;
$$ LANGUAGE plpgsql;

call purgingtbl('schemaname', 'tablename'); 

谁能帮忙?

【问题讨论】:

    标签: amazon-web-services stored-procedures amazon-redshift


    【解决方案1】:

    这部分看起来有点奇怪:

    select into Srcedate count(*) from 'vschema'.'vtable'
    

    SELECT INTO 的语法是:

    SELECT
    [ TOP number ] [ ALL | DISTINCT ]
    * | expression [ AS output_name ] [, ...]
    INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
    [ FROM table_reference [, ...] ]
    

    所以,应该是这样的:

    SELECT COUNT(*) INTO Srcedate FROM 'vschema'.'vtable' WHERE ...
    

    您可以通过在存储过程之外将其作为普通命令运行来对其进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2022-08-22
      • 2022-01-22
      相关资源
      最近更新 更多