分析根据包名建Oracle存储过程时遇到的错务故障排除
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了分析根据包名建Oracle存储过程时遇到的错务故障排除,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2828字,纯文字阅读大概需要5分钟。
内容图文
![分析根据包名建Oracle存储过程时遇到的错务故障排除](/upload/InfoBanner/zyjiaocheng/553/2b2e9b757df64b92afbdeec9fb3922c6.jpg)
哦,平常建存储过程时,阿堂就是直接用ldquo;create or replace procedure 存储过程名rdquo; 这样的形式来建的,没遇到什么问题
哦,平常建存储过程时,阿堂就是直接用“create or replace procedure 存储过程名” 这样的形式来建的,没遇到什么问题,这不,这两天在项目中尝试用包的形式,建存储过程时就遇到了实际问题,在PL/SQL中运行命令后,没有什么编译错务。。运行完毕,再在pl/sql中看时,就会一个该包上有一个红色的x,晕了。。要看上面的错误提示,,是出现在下面建 create or replace package body display_users_package is时,在create上报错。一看,关健字书写没错误啊。。其实,后來找到原因后,回个头来思考,上面这个提示是非常正确的。(其意思就是告诉我们,建包时,下面不能把建包body的命令放在一起运行的,言外之意,就是要删除中间开始的从create or replace package body display_users_package is 到后面的所有语句,即可)
这里,要感谢部门同事"木生"了,是他帮忙找到的错误原因了
在网上的文章介绍,建包,包主体,及存储过程时,代码都全放在一起了,基本上没有什么说明,所以,一般人就以为这些命令是一起在运行了。。
我运行代码时报错时,完整代码如下
create or replace package xinfei_ims.display_users_package is
type search_results is ref cursor;
procedure display_users_proc(results_out out search_results,userId in test_users.user_id%type);
end display_users_package;
create or replace package body display_users_package is
procedure display_users_proc(results_out out search_results, userId in test_users.user_id%type) is
begin
if userId is not null then
open results_out for select * from test_users where user_id like userId||'%';
else
open results_out for select * from test_users;
end if;
end display_users_proc;
end display_users_package;
事实,“运行建包”和“运行建包主体”的命令是要分开的。。为什么这样说,其实,仔细看PL/SQL中左边的菜单就可以看出,Oracle中 PACKAGE和PACKAGE BOYIES是分开的,从下面图示中就可以看出
建PACKAGE
create or replace package display_users_package is
type search_results is ref cursor;
procedure display_users_proc(results_out out search_results,
userId in test_users.user_id%type);
end display_users_package;
建PACKAGE BODY
create or replace package body display_users_package is
procedure display_users_proc(results_out out search_results, userId in test_users.user_id%type) is
begin
if userId is not null then
open results_out for select * from test_users where user_id like userId||'%';
else
open results_out for select * from test_users;
end if;
end display_users_proc;
end display_users_package;
在JAVA中建用这样含有包的存储过程时,用如下形式
包名.存储过程名
CallableStatement cs = null;
cs = conn.prepareCall("call display_users_package.display_users_proc(?,?)");
cs.registerOutParameter (1, OracleTypes.CURSOR);
cs.setObject(2, params);
内容总结
以上是互联网集市为您收集整理的分析根据包名建Oracle存储过程时遇到的错务故障排除全部内容,希望文章能够帮你解决分析根据包名建Oracle存储过程时遇到的错务故障排除所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。