为什么Redshift中执行RAISE NOTICE语句会出现语法错误
报错原因说明
- 根本原因:
RAISE系列语句(包含RAISE NOTICE、RAISE INFO等写法)是PL/pgSQL过程语言的专属语法,不属于标准SQL范畴。Amazon Redshift仅支持在存储过程、自定义UDF的内部代码块中调用该语句,不允许直接作为独立SQL命令执行,该报错和权限、使用的客户端工具、语句大小写均无关联。 - 功能验证方法:你可以通过创建测试存储过程验证
RAISE NOTICE的可用场景:
-- 创建测试存储过程 CREATE OR REPLACE PROCEDURE test_raise_notice() LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'hello world'; END; $$; -- 调用存储过程即可看到对应通知输出 CALL test_raise_notice();
- 普通场景替代方案:如果只是需要做简单的信息输出,无需使用过程语法的场景,直接用
SELECT语句即可实现同等效果:
SELECT 'hello world' AS notice_output;
内容的提问来源于stack exchange,提问作者AriasFromDeep3rd
相关产品推荐
相关产品推荐

