一、前言
SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。
BEGIN --some code here IF condition THEN GOTO label; END IF;
-- some code here GOTO label;
< -- code to jump to
END; /
|
CREATE OR REPLACE FUNCTION proc_goto(i in integer,j in integer) RETURNS TEXT LANGUAGE plpgsql AS $$ BEGIN LOOP INSERT INTO test_1(id,date) VALUES(i,current_date) ; i := i+1; IF i=j THEN GOTO label; END IF; END LOOP;
< INSERT INTO test_1(id,date) VALUES(i,'3000-12-31') ;
RETURN 'succeed'; END $$;
CALL proc_goto(1,5);
select * from test_1; |
1、不支持有多个相同的GOTO labels目标场景,无论是否在同一个block中。
BEGIN GOTO label 1; << label 1>> SELECT * FROM ... << label 1>> UPDATE t1 SET ... END; |
2、不支持GOTO跳转到IF语句,CASE语句,LOOP语句中。
BEGIN GOTO label 1; IF valid THEN << label 1>> SELECT * FROM ... END IF; END; |
3、不支持GOTO语句从一个IF子句跳转到另一个IF子句,或从一个CASE语句的WHEN子句跳转到另一个WHEN子句。
BEGIN IF valid THEN GOTO label 1; SELECT * FROM ... ELSE << label 1>> UPDATE t1 SET ... END IF; END; |
BEGIN GOTO label 1; BEGIN << label 1>> UPDATE t1 SET ... END; END; |
BEGIN << label 1>> UPDATE t1 SET ... EXCEPTION WHEN condition THEN GOTO label 1; END; |
DECLARE done BOOLEAN; BEGIN FOR i IN 1..50 LOOP IF done THEN GOTO end_loop; END IF; <> NULL; END LOOP; END; / |
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!