Oracle存储过程中跳出循环的写法 博客分类: oracleOracle 记录exit和return的用法 exit用来跳出循环 loop IF V_KBP IS NULL THEN EXIT; END IF; end loop; return跳出存储过程 loop IF V_KBP IS NULL THEN return; END IF; end loop; 跳出loop 一次循环 oracle 11g已提供continue; oracle 10g及以下,使用goto来替代,例如 SQL> set serveroutput on; SQL> declare 2 begin 3 for i in 1..10 loo...
第一种:使用RETURN的时候,直接跳出存储过程或者函数 第二种:使用EXIT的时候,跳出本循环转而执行本循环的上一级循环的下一次循环。就此案例而言MY_CU.SPBH = ‘AAA‘为真的时候,直接跳出MY循环转而去执行MY_CU的下一次循环 第三种:使用CONTINUE的时候,本次循环后面的代码部分不再执行,转而执行本循环的下一次循环。就此案例而言MY_CU.SPBH = ‘AAA‘为真的时候,后面的代码不执行,继续MY的下一次循环Oracle循环中的EXIT、R...
CREATE OR REPLACE PROCEDURE proc_testasi number;BEGIN i:=0;while i < 10 LOOPbegin i:= i + 1;--insert into student () values ();Dbms_output.Put_line(‘插入第‘||i||‘条数据‘); end;end LOOP;END proc_test;ORACLE存储过程while循环的使用标签:oracle存储过程while循环的使用本文系统来源:http://7883830.blog.51cto.com/7873830/1793504
SET serveroutput ON;CREATE OR REPLACE PROCEDURE SP_PRO6(SPNAME VARCHAR2) IS --定义 V_SAL EMP.SAL%TYPE;BEGIN --执行 SELECT SAL INTO V_SAL FROM EMP WHERE ENAME = SPNAME; --判断 IF V_SAL < 2000 THEN UPDATE EMP SET SAL = SAL + SAL * 0.1 WHERE ENAME = SPNAME; COMMIT; END IF;END;/--调用存储过程exec SP_PRO6(‘ALLEN‘); 2)、二重条件分支 if–then–else问题:编写一个过程,可以输入一个雇员名,如...
形式DECLARE CURSOR c_sal IS SELECT employee_id, first_name || last_name ename, salary FROM employees ; BEGIN --隐含打开游标 FOR v_sal IN c_sal LOOP --隐含执行一个FETCH语句 DBMS_OUTPUT.PUT_LINE(to_char(v_sal.employee_id)||‘---‘|| v_sal.ename||‘---‘||to_char(v_sal.salary)) ; --隐含监测c_sal%NOTFOUND END LOOP; --隐含关闭游标 END; 2.普通的...
oracle存储过程、声明变量、for循环 1、创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin --存储过程的执行体 end test; 打印出输入的时间信息 E.g: create or replace procedure test(workDate in Date) is begin dbms_output.putline('The input date is:'||to_date(workDate,'yyyy-mm-dd')); end test; 2、变量赋值 变量名 ...
如果表结构只对应一个字段,可以 select col1 bulk collect into 变量,不用游标循环,简洁高效 create or replace function get_airway_subpoint(awid in number) return airway_subpnts_tab is --CREATE OR REPLACE TYPE AIRWAY_SUBPNTS_TAB as table of number(11) v_ptns airway_subpnts_tab; --返回航路所有点id begin select f2.airway_point1 bulk collect into v_ptns from RTE_SEG f1,segment f2 where f1.en_route_rte_...
REF CURSOR; --定义一个动态游标游标名 游标类型;如果查询的表的数据不同的,动态变化的,这时候可以用动态游标。 需要注意的是,动态游标的定义, 在普通存储过程中:需要放在 is 后面的第一行。 动态游标通过:open 游标 for 字符串,形式使用,遍历。create or replace procedure P_TEST_SQL is TYPE ref_cursor_type IS REF CURSOR; --定义一个动态游标 tablename varchar2(200) default ‘ess_client‘; v_...
--简单的条件判断if–then --编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 create or replace procedure sp_pro6 ( spname varchar2 )is --定义 v_sal emp.sal%type; begin --执行 select sal into v_sal from emp where ename=spname; --判断 if v_sal<2000 then update emp set sal=sal+sal*0.1 where ename=spname; end if; commit; end; --调用存储过程 exec SP_PRO6(‘ALLEN‘); =...
/*2 for循环打印1到103 */4 5 set serveroutput on;6 7 declare8 9 begin 10 for i in 1..10 loop 11 dbms_output.put_line(i); 12 13 end loop; 14 15 end; 16 / while循环 1 /*2 打印数字1 ~ 103 */4 5 set serveroutput on;6 7 declare8 9 num number := 1; 10 11 12 begin 13 14 while num <= 10 loop 15 dbms_output.put_line(num); 16 num := num +1; 17 end loop; 18 19 end; 20...
--打印输出从1到10的正整数DECLARE v_i NUMBER(10) := 0;BEGIN LOOP v_i := v_i + 1; DBMS_OUTPUT.put_line(v_i); EXIT WHEN v_i=10; --或者v_i>9; END LOOP;END; --打印输出从1到10之间的偶数DECLARE v_i NUMBER(10) := 0;BEGIN LOOP v_i := v_i + 1; IF v_i MOD 2 = 0 THEN DBMS_OUTPUT.put_line(v_i)...
)BEGIN IF FALSE THEN DBMS_OUTPUT.put_line(‘执行if语句...‘); ELSIF TRUE THEN DBMS_OUTPUT.put_line(‘执行ELEIF1语句...‘); ELSIF TRUE THEN DBMS_OUTPUT.put_line(‘执行ELEIF2语句...‘); ELSIF FALSE THEN DBMS_OUTPUT.put_line(‘执行ELEIF3语句...‘); END IF;END; --百分制成绩转化为五分制成绩,并打印输出DECLARE v_score NUMBER(3) :=‘&sco...
记录exit和return的用法 exit用来跳出循环 loop IF V_KBP IS NULL THEN EXIT; END IF; end loop; return跳出存储过程 loop IF V_KBP IS NULL THEN return; END IF; end loop; 跳出loop 一次循环 oracle 11g已提供continue; oracle 10g及以下,使用goto来替代,例如 SQL> set serveroutput on; SQL> declare 2 begin 3 for i in 1..10 loop 4 if mod(i,2)=0 then 5 goto next; 6 ...
declare maxnumber constant number:=10000; i number :=1; begin for i in 1..maxnumber loop insert into DEPT(DEPTID,DEPTNAME,FATHERID) values(i,CONCAT(‘test‘,i),i-1); --CONCAT(‘test‘,i)是将test与i进行拼接 end loop; dbms_output.put_line(‘ 成功录入数据! ‘); commit; end; oracle循环插入1万条数据标签:com 成功 commit cat b...
2 i number := 0; 3 begin 4 loop 5 dbms_output.put_line(i); 6 i := i+1; 7 exit when i = 10; 8 end loop; 9 end; 10 /0123456789 PL/SQL procedure successfully completed. SQL> declare 2 i number := 0; 3 begin 4 loop 5 i := i+1; 6 dbms_output.put_line(i); 7 exit when i = 10; 8 end loop; 9 end; 10 /12345678910 PL/SQL procedure successfully completed.『ORACLE』...