十几年没有用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的存储过程的例子的更多相关文章

  1. oracle存储过程的例子

    oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的 ...

  2. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  3. oracle中存储过程详解

    oracle中存储过程的使用 过程是指用于执行特定操作的PL/SQL块.如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程.通过使用过程,不仅可以简化客户应用的开发和维护,而且可以提高 ...

  4. JDBC调用存储过程的例子

    下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...

  5. Oracle/PLSQL存储过程详解

    原文链接:https://blog.csdn.net/zezezuiaiya/article/details/79557621 Oracle/PLSQL存储过程详解 2018-03-14 17:31: ...

  6. java下实现调用oracle的存储过程和函数

    在Oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR() PRIMARY KE ...

  7. Oracle中存储过程传入表名学习

    Oracle中存储过程传入表名: 一.动态清除该表的数据 create or replace procedure p_deletetable(i_tableName in varchar2)  as  ...

  8. 使用Oracle的存储过程批量插入数据

    原文地址:http://www.cnblogs.com/liaoyu/p/oracle-procedure-batch-insert.html 作者:L君还在说之乎者也 最近在工作中,需要使用生成一些 ...

  9. Oracle创建存储过程、执行存储过程基本语法

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

随机推荐

  1. 怎么提高U盘传输文件的性能?

    U盘使用时间久了,其传输复制文件速度就可能会变得有些慢.出现这个问题的原因有很多,除了U盘本身的问题外,也可能会有电脑设置方面的因素在影响.好系统下面就来告诉大家解决U盘传输复制文件速度慢的几个小技巧 ...

  2. 第一章·ELKstack介绍及Elasticsearch部署

    一.ELKstack课程大纲  二.ELKstack简介 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当 ...

  3. 接口测试工具中 post请求如何传递多维数组

    1,请求参数为数组时,可以采用传递 json格式的形式传递请求参数(字段及字段对应的值如查是字符,都应该用双引号括起来.用单引号会无法识别),后台接收的数据为json . 2,直接以数组格式来请请求 ...

  4. 分析bug是前端还是后端的

    如何分析一个bug是前端还是后端的? 平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug 这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数 ...

  5. PAT乙级1013

    题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112 题解一 从第一个素数开始找起,输出 ...

  6. 部署jenkins+git

    Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 安装并启动思路: 安装准备 ...

  7. maven 项目下 Maven Dependencies 下列表为空

    问题如题,如下图: 解决: 选中 Maven Dependencies ,右键 属性 如下图: 把   resolve dependencies from workspace projects   这 ...

  8. TXNLP 09-17

    上节课讲了一些算法的复杂度,都比较简单,我就没有单独截图.1 n n^2 nlogn logn...等等 其实一些排序问题也比较简单.还是给大家列举一下. 归并排序: 主定理定理..吐血 算法复杂度相 ...

  9. [Git] How to revert one file changes from one commit

    Many times we might changed one file which we don't intent to do... but it was too late, until we fo ...

  10. 【leetcode】1286. Iterator for Combination

    题目如下: Design an Iterator class, which has: A constructor that takes a string characters of sorted di ...