DECLARE
V_STR VARCHAR2(1) :='b';
X_CHAR_SET VARCHAR2(100) :='abcdefg';BEGINFOR I IN1..LENGTH(V_STR)LOOPIF(INSTR(X_CHAR_SET, SUBSTR(V_STR, I,1))=0)THEN
dbms_output.put_line('NO');CONTINUE;ENDIF;
dbms_output.put_line('1、循环:'||I);ENDLOOP;
dbms_output.put_line('CONTINUE-------------------------------------------------------------');FOR I IN1..LENGTH(V_STR)LOOPIF(INSTR(X_CHAR_SET, SUBSTR(V_STR, I,1))=0)THEN
dbms_output.put_line('NO');EXIT;ENDIF;
dbms_output.put_line('2、循环:'||I);ENDLOOP;
dbms_output.put_line('EXIT-------------------------------------------------------------');FOR I IN1..LENGTH(V_STR)LOOPIF(INSTR(X_CHAR_SET, SUBSTR(V_STR, I,1))=0)THEN
dbms_output.put_line('OK');RETURN;ENDIF;
dbms_output.put_line('3、循环:'||I);ENDLOOP;
dbms_output.put_line('RETURN-------------------------------------------------------------');END;DECLARE
IN_DECLARE_DT VARCHAR2(10);
D_DECLAREDATE DATE;TYPE C_TYPE IS REF CURSOR;
CUR_DT C_TYPE;BEGINOPEN CUR_DT FOR(SELECT V_DATE FROM(SELECT'20201010'FROM DUAL UNIONALLSELECT'20211010'FROM DUAL))LOOPFETCH CUR_DT INTO IN_DECLARE_DT;EXITWHEN CUR_DT%NOTFOUND;
D_DECLAREDATE := TO_DATE(IN_DECLARE_DT,'YYYYMMDD');IF D_DECLAREDATE > SYSDATE THEN
dbms_output.put_line(D_DECLAREDATE);ENDIF;ENDLOOP;CLOSE CUR_DT;
dbms_output.put_line('OVER');END;
2.goto
属于plsql控制语句,用于程序控制非条件跳至指定标签<<???>>。不易控制和维护,慎用!
简单GOTO 语句,判断数字是否为质数,如下:
DECLARE
p VARCHAR2(30);
n PLS_INTEGER :=37;BEGINFOR j IN2..round(sqrt(n))LOOPIF n MOD j =0THEN
p :=' is not a prime number';GOTO print_now;ENDIF;ENDLOOP;
p :=' is a prime number';<<print_now>>
dbms_output.put_line(to_char(n)|| p);END;