如何建立及调用oracle存储过程-实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何建立及调用oracle存储过程-实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2974字,纯文字阅读大概需要5分钟。
内容图文
Oracle SQL Developer定制每天执行一次存储过程的计划任务
1.获取昨天一天的所有数据
select pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from brsj_kms_problem where createtime between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate,'yyyy-mm-dd');
2.将查询到的数据插入到对应的表中
insert into brsj_kms_distributeproblem ( pk_information ,problemno ,problemname ,productid ,partno ,createUser ,createTime ,dutygroup ,dutyuser ,batch ,problemtype ,emergencydegree ) select pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from brsj_kms_problem where createtime between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate,'yyyy-mm-dd');
这里特别说明一下,第一个括号后面没有values关键字,加上values关键字执行就会报错,错误的表达式。
3.测试上面的SQL语句无误后,开始创建存储过程
create procedure ScheduledTasks is begin insert into brsj_kms_distributeproblem ( pk_information ,problemno ,problemname ,productid ,partno ,createUser ,createTime ,dutygroup ,dutyuser ,batch ,problemtype ,emergencydegree ) select pk_information,problemno,problemname,productid,partno,createUser,createTime,dutygroup,dutyuser,batch,problemtype,emergencydegree from brsj_kms_problem where createtime between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate,'yyyy-mm-dd'); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback'); ROLLBACK; END;
创建好了之后,刷新一下,在左侧的过程文件夹中就可以看到对应的过程名称,检查图标上是否有红叉,如果有,说明语句错误,重新检查哪里出错。如果没有错误,直接右击,选择运行,运行成功后,可以查看对应的表中是否成功插入了数据,需要注意的是要确保执行过程的SQL语句逻辑上是能产生数据的,例如查询昨日的所有记录,如果昨日没有数据产生,即便SQL语句无误也不会产生结果,所以需要提前添加一些测试数据,确保能看到结果。
运行到这里,能看到新产生的数据,说明创建的过程是没有问题的,接下来就是如何每天让它运行一次的问题了。
Oracle存储过程的调用
如何执行oracle存储过程,就exec一下?
不单单是exec一下,还是得分情况:
1.如果是命令窗口就用exec 存储过程名,举个栗子:
EXEC procedure;--procedure是存储过程名
2.如果是PL/SQL窗口就用 begin 存储过程名 end; 举个栗子:
begin procedure;--procedure是存储过程名 end;
3.如果是程序中调用就用 call 存储过程名 ,举个栗子:
hibernateDao.excuteSqlUpdate("{Call proc_stuInfo()}");//存储过程proc_stuInfo
另附 存储过程创建方法:
create or replace procedure pro_test--pro_test为存储过程名
is
temp varchar2(128);--temp为存储过程临时变量
bengin
select count(*) into temp from TEST;--这里为什么会使用temp变量,下面会提到
insert into TEST values(3,'sss',25,'asd');
commit;--切记commit一下(提交)
end;
注意:在存储过程中是不能直接出现"select * from test",这种简单查询,必须将查询出来的数据放入存储过程变量中,如上所示的temp变量。
部分知识参考来自:
1.https://www.cnblogs.com/plumsq/p/7151579.html
2.https://blog.csdn.net/likecandy/article/details/82719645
内容总结
以上是互联网集市为您收集整理的如何建立及调用oracle存储过程-实例全部内容,希望文章能够帮你解决如何建立及调用oracle存储过程-实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。