SQL> set serveroutput on; SQL> begin sayHello; end; /
(2)带参数的存储过程:
给指定的员工涨100元工资,并且打印涨前和涨后的薪水:
1 2 3 4 5 6 7 8 9 10 11 12
create or replace procedure addSal(pempno in emp.empno%type) as pename emp.ename%type; beforesal emp.sal%type; aftersal emp.sal%type; begin select ename,sal into pename,beforesal from emp where empno=pempno; aftersal:=beforesal+100; update emp set sal=aftersal where empno=pempno; dbms_output.put_line('姓名: '||pename||' 涨前工资:'||beforesal||'涨后工资:'||aftersal); end; /
create [or replace] function 函数名(参数列表) return 函数值类型 as PLSQL子程序体;
注意事项:
(1) 与存储过程注意事项类似,不同的是,必须有个返回值;
(2) 参数列表可以有,也可以没有.当没有时,函数名后面不要带括号.
1 2 3 4 5 6 7 8 9
create or replace function queryempannal(pempno in number) return number as psal emp.sal%type; pcomm emp.comm%type; begin select sal,comm into psal,pcomm from emp where empno=pempno; return psal*12+nvl(pcomm,0); end;
create or replace procedure queryempinform(eno in number, pename out varchar2, psal out number, pjob out varchar2 ) as begin select ename,sal,job into pename,psal,pjob from emp where empno=eno; end; /
CREATEOR REPLACE FUNCTION base64encode(p_blob INBLOB) RETURNCLOB IS l_clob CLOB; l_step PLS_INTEGER :=12000; BEGIN FOR i IN0 .. TRUNC((DBMS_LOB.getlength(p_blob) -1 )/l_step) LOOP l_clob := l_clob || UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_blob, l_step, i * l_step +1))); END LOOP; RETURN l_clob; END ; /