博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
orcale存储过程学习之路--存储过程实例(三)
阅读量:6049 次
发布时间:2019-06-20

本文共 2968 字,大约阅读时间需要 9 分钟。

--创建表

create table TESTTABLE

(
  id1  VARCHAR2(12),
  name VARCHAR2(32)
)
select t.id1,t.name from TESTTABLE t

insert into TESTTABLE (ID1, NAME)
values ('1', 'zhangsan');
insert into TESTTABLE (ID1, NAME)
values ('2', 'lisi');
insert into TESTTABLE (ID1, NAME)
values ('3', 'wangwu');
insert into TESTTABLE (ID1, NAME)
values ('4', 'xiaoliu');
insert into TESTTABLE (ID1, NAME)
values ('5', 'laowu');

//-------------------------  声明部分  ---------------------------

create or replace package PRO_TEST_TESTTABLE is

PROCEDURE Test_Count;
PROCEDURE Test_Pra(Name IN varchar2);
PROCEDURE Test_Cursor;
PROCEDURE Test_Case;
PROCEDURE Test_Loop;
PROCEDURE Test_Cursor_Loop;
PROCEDURE Test_Error(isOk in varchar2);
PROCEDURE Test_Exception(isOk in varchar2);
end PRO_TEST_TESTTABLE;

//-------------------------  body部分  ---------------------------

create or replace package body PRO_TEST_TESTTABLE IS

PROCEDURE Test_Count IS
v_total number(1);
begin
select count(*) into v_total from TESTTABLE;
DBMS_OUTPUT.put_line('总人数:'||v_total);
end test_count;
PROCEDURE Test_Pra(Name IN varchar2)IS
begin
null;
end Test_Pra;
-- 关于 游标 if,for 的例子
PROCEDURE Test_Cursor IS
cursor var_c is select * from TESTTABLE;
BEGIN
for temp in var_c loop
if temp.name = 'lisi' then
dbms_output.put_line('name----- '||temp.name);
elsif temp.name = 'zhangsan' then
dbms_output.put_line('name----- '||temp.name);
else
dbms_output.put_line('------name------ ');
end if;
end loop;
NULL;
END Test_Cursor;
-- 关于 Case的例子
PROCEDURE Test_Case IS
cursor var_c is select * from TESTTABLE;
BEGIN
for temp in var_c loop
case
when 'zhangsan'= temp.name then
dbms_output.put_line(temp.name);
when 'zhangsan'= temp.name then
dbms_output.put_line(temp.name);
else
dbms_output.put_line('--------------'||temp.name);
end case ;
end loop;
END Test_Case;
-- 关于 Loop的例子
PROCEDURE Test_Loop IS
sum1 number := 0;
temp number :=0 ;
begin
loop
exit when temp >= 2 ;
sum1 := sum1+temp;
temp := temp +1;
end loop;
dbms_output.put_line(sum1 );
END Test_Loop;
PROCEDURE Test_Cursor_Loop IS
cursor var_cur is select * from TESTTABLE;
stu_name varchar2(100);
T TESTTABLE%rowtype;
begin
open var_cur;
loop
fetch var_cur into T;
exit when var_cur%notfound;
dbms_output.put_line(T.name);
end loop;
close var_cur;
END Test_Cursor_Loop;
---关于异常处理的例子2
PROCEDURE Test_Error(isOk in varchar2) IS
error EXCEPTION;
BEGIN
if isOk = 'OK' then
insert into TESTTABLE (id1,name) values ('1',isOk);
elsif isOk = 'NO' then
insert into TESTTABLE (id1,name) values ('2',isOk);
raise error;
else
Dbms_Output.put_line('isOk' || isOk);
end if;
commit;
exception
when error then
rollback;
Dbms_Output.put_line('ERRO');
END Test_Error;
---关于异常处理的例子1
PROCEDURE Test_Exception(isOk in varchar2) IS
Temp varchar2(12);
BEGIN
select name into Temp from TESTTABLE where name = isOk;
dbms_output.put_line(Temp);
exception
when no_data_found
then
dbms_output.put_line('try');
when TOO_MANY_ROWS
then
dbms_output.put_line('more');
END Test_Exception;
end PRO_TEST_TESTTABLE;

 

转载地址:http://qcxex.baihongyu.com/

你可能感兴趣的文章
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
Dungeon Master ZOJ 1940【优先队列+广搜】
查看>>
Delphi 中的 XMLDocument 类详解(5) - 获取元素内容
查看>>
2013年7月12日“修复 Migration 测试发现的 Bug”
查看>>
学习vue中遇到的报错,特此记录下来
查看>>
CentOS7 编译安装 Mariadb
查看>>
jstl格式化时间
查看>>
一则关于运算符的小例
查看>>
cronexpression 详解
查看>>
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>