SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行,如下面的例子所示:
declare v_comm_percent constant number:=10; begin update emp set comm=sal*v_comm_percent where deptno=10; end SQL> / PL/SQL procedure successfully completed. SQL> |
命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:
create or replace procedure update_commission (v_dept in number,v_pervent in number default 10) is begin update emp set comm=sal*v_percent where deptno=v_dept; end SQL>/ Procedure created SQL>execute update_commission(10,15); PL/SQL procedure successfully completed. SQL> |
如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关进字。
declare v_dept number; begin select a.deptno into v_dept from emp a where job='PRESIDENT' update_commission(v_dept); end SQL>/ PL/SQL procedure successfully completed SQL> |
控制结构
控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。
语法和用途
IF..THEN
语法:
控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。
语法和用途
IF..THEN
语法:
IF condition THEN Statements 1; Statements 2; .... END IF |
IF语句判断条件condition是否为TRUE,如果是,则执行THEN后面的语句,如果condition为false或NULL则跳过THEN到END IF之间的语句,执行END IF后面的语句。
IF..THEN...ELSE
语法:
IF condition THEN Statements 1; Statements 2; .... ELSE Statements 1; Statements 2; .... END IF |
如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。
IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。
if (a>b) and (a>c) then g:=a; else g:=b; if c>g then g:=c; end if end if |
IF..THEN..ELSIF
语法:
IF condition1 THEN statement1; ELSIF condition2 THEN statement2; ELSIF condition3 THEN statement3; ELSE statement4; END IF; statement5; |