Snowflake存储过程调用Sequence NEXTVAL报错求助
在Snowflake SQL存储过程中获取Sequence下一个值的正确方法
Snowflake的SQL存储过程无法直接在RETURN语句中引用sequence.nextval,必须通过SELECT语句来获取序列值,以下是两种可行的写法:
方法一:通过变量赋值获取
use schema TEST_DB.TEST_SCHEMA; create or replace sequence TEST_DB.TEST_SCHEMA.test_seq; create or replace procedure TEST_DB.TEST_SCHEMA.test_seq_ok() returns number language sql as declare next_val number; begin select TEST_DB.TEST_SCHEMA.test_seq.nextval into next_val; return next_val; end; call test_seq_ok();
方法二:直接使用子查询返回
use schema TEST_DB.TEST_SCHEMA; create or replace procedure TEST_DB.TEST_SCHEMA.test_seq_ok() returns number language sql as begin return (select TEST_DB.TEST_SCHEMA.test_seq.nextval); end; call test_seq_ok();
原写法报错原因
SQL存储过程的语法规则中,sequence.nextval不能直接作为RETURN的表达式,必须将其包含在SELECT语句中执行,再返回结果。即使使用全限定名,直接引用的方式也不符合存储过程的语法要求。
内容的提问来源于stack exchange,提问作者Xedni
相关产品推荐
相关产品推荐

