首页 > 解决方案 > 立即执行错误

问题描述

我正在使用 Amazon RedShift SQL(多年前曾使用过 Oracle),并且每次尝试立即执行时都会遇到语法错误。我什至从 PostgreSQL 文档页面复制并发布了代码(例如使用 sprintf),但无济于事。我认为下面应该工作......?

declare 
  stm varchar(200);
begin
  stm =  'GRANT SELECT, INSERT, TRIGGER, UPDATE, DELETE, REFERENCES, RULE ON public.angus TO adcd;';
  execute immediate stm;
end;

Amazon 无效操作:“varchar”处或附近的语法错误

标签: amazon-redshiftplpgsql

解决方案


有两个问题:

  1. 您使用EXECUTE IMMEDIATEPostgreSQL 文档中找不到的,因为它是 Oracle 语法。PL/pgSQL 语句是EXECUTE.

  2. 您正在尝试将 PL/pgSQL 代码作为 SQL 语句执行,但这是行不通的。

    使用DO声明:

    DO $$DECLARE
       ...
    END;$$;
    

推荐阅读