oracle存储过程调用实践

oracle存储过程调用实践

ID:34725014

大小:50.36 KB

页数:6页

时间:2019-03-10

oracle存储过程调用实践_第1页
oracle存储过程调用实践_第2页
oracle存储过程调用实践_第3页
oracle存储过程调用实践_第4页
oracle存储过程调用实践_第5页
资源描述:

《oracle存储过程调用实践》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一直以来,存储过程就是一个心病啊,都不知道到底什么东西。不过幸好在别人的带领下,战胜了这个恐惧,算是小小的入门了。(oracle的sql叫做pl-sql,在语法上和m-sql有一些不同的地方。而且,由于java和Oracle的密切关系,所以oracle较高版本的pl-sql中也出现一些类似于面向对象编程的语法结构。)现在把我遇到的各种错误列出来,当然我有log,要不然我都记不住了。1.ORA-00921:unexpectedendofSQLcommand基本sql错误2.badSQLgrammar基本sql错误3.wrongnumberortypesofargumentsincallt

2、o***调用存储过程传入的参数不对4.weblogic.jdbc.wrapper.Array_oracle_sql_ARRAY 使用的是weblogic容器提供的ARRAY,不能直接转化成ORACLE的ARRAY,但是可以用java.sql下面的接口。5. identifier***mustbedeclared 数据库中没有定义这个名字的存储过程6.ORA-03115:unsupportednetworkdatatypeorrepresentation存储过程传入的参数类型不支持  在pl-sql中有package,可以用来定义访问变量的自定义类型,但是返回的类型除了游标以外,都不能被

3、外部,如jdbc来访问。都会提示类型不知道的错误,不管你有没有加上表空间的名字。而这个时候需要用全局的类型来定义。全局的类型,主要分为三种:1.createorreplacetypeobj_1asobject(**number,**number,**varchar2(36),**varchar2(150));2.createorreplacetypetab_1astableofobj_1;1.createorreplacetypearray_1ASVARRAY(21)OFobj_1;这几种类型都可以作为返回值,而且,后两种类型,常常可以以多维数组的形式返回。在java中可以这样取值: 

4、              proc.execute();               java.sql.Arrayarr=proc.getArray(2);               Object[]strcs=(Object[])arr.getArray();               Object[]objs;               for(Objectstrct:strcs){                   objs=((java.sql.Struct)strct).getAttributes();                   bean=new**();

5、                   bean.set**(((BigDecimal)objs[0]).intValue());                   bean.set**(((BigDecimal)objs[1]).intValue());                   bean.set**((String)objs[2]);                   bean.set**((String)objs[3]);                   beans.add(bean);               }这里要注意,虽然利用的是Oracle的tabl

6、e或者varray,但是返回类型都用java.sql.Array接口来表示就好了,不要用具体的实现类,因为实现类通常在服务器的环境中,本地的classpath中根本没有配置。如果存储过程中的有多个查询,比如两个,第一个查询查询一个list出来,第二个查询要遍历这个list,分别查询,然后组装成一个ARRAY的形式,就可以利用上面的三个类型中的1,2或者1,3即可。值得注意的是,oracle的面向对象特点,所以,当你要在ARRAY扩充之后插入一行时,可以先利用对象的构造函数new一次行对象。如newoj_1(f1,f2,f3),这是它默认的构造函数,你也可以自定义函数。现在有两个表A(i

7、dvarchar(15),c_idvarchar(20))其中id是主键B(c_idvarchar(20),c_name1varchar(100),c_name2varchar(100),c_name3varchar(120),date...)其中c_id是主键假设现在有一个查询,首先从A表中通过id查询一列的c_id然后利用c_id查询出对应的c_id,c_name1,c_name2.--创建对象createorreplacetypeMY_I

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。