使用oracle的存储过程的例子
十几年没有用oracle的存储过程了,有些东西已经忘了,没有想到今天又要用。在这里写个例子。
它演示了存储过程的格式,游标的使用,循环、判断的使用,还有直接执行一个拼接的SQL的用法。
以下是代码:
create or replace procedure wanglc_test is
v_table_name varchar2(50);
v_sql varchar2(4000); cursor cur_get_users is
select username, created from all_users;
v_username varchar2(50);
v_created date;
begin
dbms_output.put_line(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') ||
' call procedure wanglc_test begin...'); open cur_get_users;
loop
fetch cur_get_users
into v_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') then
dbms_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); execute immediate v_sql;
execute immediate 'commit';
end if; end loop;
close cur_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中右键点击存储过程名称进行测试。此处略。
使用oracle的存储过程的例子的更多相关文章
- oracle存储过程的例子
oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的 ...
- PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...
- oracle中存储过程详解
oracle中存储过程的使用 过程是指用于执行特定操作的PL/SQL块.如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程.通过使用过程,不仅可以简化客户应用的开发和维护,而且可以提高 ...
- JDBC调用存储过程的例子
下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...
- Oracle/PLSQL存储过程详解
原文链接:https://blog.csdn.net/zezezuiaiya/article/details/79557621 Oracle/PLSQL存储过程详解 2018-03-14 17:31: ...
- java下实现调用oracle的存储过程和函数
在Oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR() PRIMARY KE ...
- Oracle中存储过程传入表名学习
Oracle中存储过程传入表名: 一.动态清除该表的数据 create or replace procedure p_deletetable(i_tableName in varchar2) as ...
- 使用Oracle的存储过程批量插入数据
原文地址:http://www.cnblogs.com/liaoyu/p/oracle-procedure-batch-insert.html 作者:L君还在说之乎者也 最近在工作中,需要使用生成一些 ...
- Oracle创建存储过程、执行存储过程基本语法
>>>>>>>>>>>>>>>>>>>>>>>>> ...
随机推荐
- MySQL踩坑及MySQL解压版安装
MySQL默认当前时间: MySQL5.5版本以下是不支持:datetime default now() 的,只能写成 timestamp default now() ; 而MySQL5.6以上是支持 ...
- IPC之msg.c源码解读
// SPDX-License-Identifier: GPL-2.0 /* * linux/ipc/msg.c * Copyright (C) 1992 Krishna Balasubramania ...
- 8.2.ZooKeeper应用场景
7.ZooKeeper应用举例 为了方便大家理解ZooKeeper,在此就给大家举个例子,看看ZooKeeper是如何实现的他的服务的,我以ZooKeeper提供的基本服务分布式锁为例. 7.1 分布 ...
- 配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机
一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; ...
- 访问网络资源的方式--application/json和x-www-form-urlencoded
以Jsoup为例,x-www-form-urlencoded方式 Map<String,Object> map = new HashMap<>(); map.put(" ...
- HelloWorld编写过程中注意事项
一.package关键字 * package表示当前代码所属的包(package),是一种组织结构.其他package通过包名调用这个包下内容* package是必须的,每个文件的package必须存 ...
- 箭头函数 -ES6
1)函数参数只有一个:可以省略 ( ) var f = a => a 等同于 var f = function (a) { return a } 2)函数内部语句只有一个:可以省略 { ...
- Spring Boot 中application.yml与bootstrap.yml的区别(转)
yml与properties其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在. 推荐使用yml,更简洁. bootstrap与applic ...
- 【51nod 1038】X^A Mod P
题目描述 X^A mod P = B,其中P为质数.给出P和A B,求< P的所有X. 例如:P = 11,A = 3,B = 5. 3^3 Mod 11 = 5 所有数据中,解的数量不超过Sq ...
- 题解 【HEOI2016】tree树
题面 解析 其实这题可以考虑离线做法,用并查集解决. 因为仔细想,添加标记并不方便, 但如果用并查集记录下祖先, 再一一删除,就会方便很多. 先把每次操作记录下来, 同时记录下每个点被标记的次数(因为 ...