oracle写一个oracle 存储过程 输出输出一个菱形

2009年2月 Oracle大版内专家分月排行榜第三
2009年2月 Oracle大版内专家分月排行榜第三
2009年2月 Oracle大版内专家分月排行榜第三
2009年2月 Oracle大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。博客访问:
博文数量: 2147
注册时间:
认证徽章:
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询:
微信公众号:
wisdomone9
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
 真是搞笑至极.因久未编写存储过程.竟然今天出笑话.TCBS业务系统中涉及的存储过程诸如errnbr及errmsg输出参数,仅在存储过程出错异常exception才会有值.我竟然跑到编写存储过程的同事处询问此事.以为人家的问题.后回来一测试. 一定要加强学习.从事IT行业.真是一日不练.技艺生啊. 附上测试代码,供备记--a为输入参数--b为输出参数--测试目的:如果a有值,则b将无值;否则如果a无值,则b有值create or replace procedure test_out(a in integer,b out integer)asnone_--定义判断输入参数a是否有值的异常beginif (a=1) then&--当输入参数有值,什么也不作if (a is null) then --当输入参数无值raise none_a; --触发存储过程定义的异常none_aexception& --由exception定义具体的异常处理代码when none_a then --exception由诸多when then节构成b:=888; --捕获了异常none_a,输出参数b为888when others then&b:=111;
阅读(3762) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。博客访问: 583451
博文数量: 112
注册时间:
认证徽章:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
Oracle带输入输出参数的存储过程
(一)使用输入参数
需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60。
创建存储过程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number) as
& declare max_
&&& if(emp_name is null or length(emp_name) = 0) then
&&& if(dept_no != 60) then
&&& select max(empno) into max_empno from emp_
&&& insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
end insert_
Procedure created.
调用存储过程并验证:
SQL>execute insert_emp('Li Si', 60);
PL/SQL procedure successfully completed.
col empno format 99999;
col ename format a15;
col deptno format 99999;
select empno, ename, deptno from emp_copy where deptno = 60;
&EMPNO ENAME&& &&&&&&& DEPTNO
------ --------------- ------
& 7981 Li Si&& &&& &&& 60
SQL> execute insert_emp('', 6);
PL/SQL procedure successfully completed.
SQL> select empno, ename, deptno from emp_copy where deptno = 6;
(二)使用输出参数
需求:在上个需求的基础上,要分别统计表emp_copy插入数据前后的记录数。
创建存储过程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
& declare max_
&&& if(emp_name is null or length(emp_name) = 0) then
&&& if(dept_no != 60) then
&&& select count(1) into original_count from emp_
&&& select max(empno) into max_empno from emp_
&&& insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
&&& select count(1) into current_count from emp_
end insert_
Procedure created.
调用存储过程:
declare count1
&&&&&&& count2
& insert_emp('Wang Wu', 60, count1, count2);
& dbms_output.put_line('Original count of table emp_copy is ' || count1);
& dbms_output.put_line('Current count of table emp_copy is ' || count2);
Original count of table emp_copy is 15
Current count of table emp_copy is 16
PL/SQL procedure successfully completed.
(三)使用输入输出参数
in out参数综合了上述两种参数类型,既向过程体传值,也被赋值而传到过程体外。in out参数既可以用作输入也可以用作输出。
需求:实现两数交换。
创建存储过程:
create or replace procedure swap(value1 in out number, value2 in out number) as
& value1 := value1 + value2;
& value2 := value1 - value2;
& value1 := value1 - value2;
Procedure created.
调用存储过程:
declare a number := 22;
&&&&&&& b number := 33;
& dbms_output.put_line('Before swap: a = ' || a || ', b = ' || b);
& swap(a, b);
& dbms_output.put_line('After swap: a = ' || a || ', b = ' || b);
Before swap: a = 22, b = 33
After swap: a = 33, b = 22
PL/SQL procedure successfully completed.
阅读(30701) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 输出菱形图案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信