PL/SQL 存储函数和过程
2016-12-12 17:11 甘雨路 阅读(338) 评论(0) 编辑 收藏 举报--存储过程 1.不带参: create or replace procedure 存储过程名 as|is --说明部分 begin --执行的语句; end; 调用存储过程 1 execute 存储过程名 --exec 存储过程名 2 在另外的plsql语句中直接调用 begin 存储过程名; 存储过程名; 存储过程名; end; create or replace procedure p_dept as begin dbms_output.put_line('存储过程'); end; 2.带参的存储过程 create or replace procedure 存储过程名 (参数 in|out 参数类型) as|is --说明部分 begin --执行的语句; end; --eg: create or replace procedure p_dept1 (nuo in number) as --说明部分 v_english dept.english%type; begin --执行的语句; --修改前的分数 select english into v_english from dept where id=nuo; --修改后的分数 update dept set english=english+10 where id=nuo; --打印 dbms_output.put_line('修改前分数为:'||v_english||'修改后的分数为'||(v_english+10)); end; in和out的区别 --创建一个不带参的函数 create or replace function f_dept --返回的是一个类型 return number as --说明部分 --定义一个变量来接收分数 v_english dept.english%type; begin select english into v_english from dept where name1='杨雾'; dbms_output.put_line(v_english); return v_english; end; --存储过程调用out方法实现返回多个值 create or replace procedure p_dept2 (nuo in number, v_name out varchar2, v_english out number, v_math out number) as --说明部分 begin --执行的语句; --修改前的分数 select name1,english,math into v_name,v_english,v_math from dept where id=nuo; end;
-- 存储过程 create or replace procedure p_score is v_math number; begin select math into v_math from scores where id=3; dbms_output.put_line(v_math); end; -- 带参储存过程 create procedure p_score2(digital in number) as v_chinese number; begin select chinese into v_chinese from scores where id=digital; dbms_output.put_line(v_chinese); end; --存储过程调用out方法返回多个值 create or replace procedure p_score3(v_id in number,v_english out number,v_chinese out number) as v_math number; begin select math,chinese,english into v_math,v_chinese,v_english from scores where id = v_id; dbms_output.put_line('Math:'||v_math||','||'Chinese:'||v_chinese||','||'English:'||v_english); end; -- 函数 create or replace function f_score return number as v_english scores.english%type; begin select english into v_english from scores where id = 5; return v_english; end; -- 带参函数 create or replace function f_score2(digital in number) return scores.english%type as v_english number; begin select english into v_english from scores where id = digital; return v_english; end;