oracle存储过程 = gt,使用oracle的存储过程的例子

十几年没有用oracle的存储过程了,有些东西已经忘了,没有想到今天又要用。在这里写个例子。

它演示了存储过程的格式,游标的使用,循环、判断的使用,还有直接执行一个拼接的SQL的用法。

以下是代码:

create or replace procedure wanglc_test isv_table_namevarchar2(50);

v_sqlvarchar2(4000);cursor cur_get_users is

select username, created fromall_users;

v_usernamevarchar2(50);

v_created date;begindbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ||

'call procedure wanglc_test begin...');opencur_get_users;

loopfetchcur_get_usersintov_username, v_created;exit when cur_get_users%notfound;

dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') || ' ' ||v_username|| '--' ||v_created);if (v_username = 'SYS' or v_username = 'SYSTEM') thendbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') || ' ' ||v_username|| 'is DBA!!!');/*insert into sys_user(name,created) values('SYS',sysdate)*/v_sql := 'insert into sys_user(name,created) values(''' || v_username ||''',sysdate)';

dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') || ' ' ||v_sql);executeimmediate v_sql;execute immediate 'commit';end if;endloop;closecur_get_users;

dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ||

'call procedure wanglc_test end.');end wanglc_test;

如果存储过程编译出错,可以在这里找错误点:

select * from all_errors where name = upper('wanglc_test');

在命令行执行存储过程

SQL> set serveroutput on size 10000000;

SQL> exec wanglc_test;

2019-06-04 23:56:33 call procedure wanglc_test begin...

2019-06-04 23:56:33 ACCT_OSCXK -- 21-5月 -19

2019-06-04 23:56:33 CUST_OCS0520 -- 20-5月 -19

2019-06-04 23:56:33 ACCT0520 -- 20-5月 -19

2019-06-04 23:56:33 WMSYS -- 24-8月 -13

2019-06-04 23:56:33 APPQOSSYS -- 24-8月 -13

2019-06-04 23:56:33 DBSNMP -- 24-8月 -13

2019-06-04 23:56:33 ORACLE_OCM -- 24-8月 -13

2019-06-04 23:56:33 DIP -- 24-8月 -13

2019-06-04 23:56:33 OUTLN -- 24-8月 -13

2019-06-04 23:56:33 SYSTEM -- 24-8月 -13

2019-06-04 23:56:33 SYSTEM is DBA!!!

2019-06-04 23:56:33 insert into sys_user(name,created) values('SYSTEM',sysdate)

2019-06-04 23:56:33 SYS -- 24-8月 -13

2019-06-04 23:56:33 SYS is DBA!!!

2019-06-04 23:56:33 insert into sys_user(name,created) values('SYS',sysdate)

2019-06-04 23:56:33 call procedure wanglc_test end.

PL/SQL procedure successfully completed

另外,可以在plsql developer中右键点击存储过程名称进行测试。此处略。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值