plsql-存储过程

CREATE OR REPLACE PROCEDURE p1
(v_id in emp.empno%TYPE)
IS
BEGIN
UPDATE emp
SET sal = sal +1
WHERE empno = v_id;
commit;
END p1;
/

 

-验证原程序
select text from user_source where NAME =‘P1’;--大写
select OBJECT_NAME,OBJECT_TYPE,STATUS from user_objects
where OBJECT_TYPE='PROCEDURE';
EXECUTE P1 (7369); --单独运行过程
Begin --在模块中调用
P1(7900);
P1 (7902);
P1 (7839);
end;
/

参数导入和导出型的存储过程(in/out)
CREATE OR REPLACE PROCEDURE query_emp
(v_id        IN emp.empno%TYPE,
v_name  OUT emp.ename%TYPE,
v_salary  OUT emp.sal%TYPE,
v_comm OUT emp.comm%TYPE)
IS
BEGIN
SELECT ename, sal, comm
INTO v_name, v_salary, v_comm
FROM emp
WHERE empno = v_id;
END query_emp;
/
传变量到调用的模块
declare
v1 emp.ename%TYPE;
v2 emp.sal%TYPE;
v3 emp.comm%TYPE;
begin
query_emp(7654,v1,v2,v3);
dbms_output.put_line(v1);
dbms_output.put_line(v2);
dbms_output.put_line(v3);
end;
/

 

参数导入和导出共用变量型的存储过程(inout)
CREATE OR REPLACE PROCEDURE format_phone
(v_phone_no IN OUT VARCHAR2)
IS
BEGIN
v_phone_no := '(' || SUBSTR(v_phone_no,1,3) ||
')' || SUBSTR(v_phone_no,4,3) ||
'-' || SUBSTR(v_phone_no,7);
END format_phone;
/
传变量到调用的模块
declare
v1 varchar2(20);
begin
v1:='010456789';
format_phone(v1);
dbms_output.put_line(v1);
end;
/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值