//创建包,在包中创建refcursor
CREATE OR REPLACE PACKAGE "TYPES"
AS[code=Java]
TYPE refcursor IS REF CURSOR;
END;//创建存储过程
CREATE OR REPLACE PROCEDURE obtainpartnumberproc (
leftobid IN VARCHAR2,
rst IN OUT TYPES.refcursor
)
IS
v_sqlstring VARCHAR2 (1000);
BEGIN
v_sqlstring :=
'SELECT CLASS2,RIGHT,W2ISBORROWED FROM PDMM31A.ASSMSTRC WHERE LEFT='
|| leftobid; OPEN rst FOR v_sqlstring;
END obtainpartnumberproc;
[/code]//在java中我是这样调用的CallableStatement cstmt = null ;
ResultSet rs = null ;
try{
string callSql = "{ call obtainpartnumberproc( ?,? )}";
//leftobid为一变量
cstmt.setString( 1,leftobid);
cstmt.registerOutParameter( 2,oracle.jdbc.OracleTypes.CURSOR ) ;
cstmt.execute();
rs = ( ResultSet )cstmt.getObject( 2 );
}
可是cstmt.setString( 1,leftobid )报错,错误信息为:java.lang.NullPointerException
,请问朋友那里错了?如何在java中调用上面创建的存储过程?
解决方案 »
- 安装Oracle时,出现“实例化EM配置文件时出错”
- 为什么我运行自己编写的过程不能得出结果呢,哪里错了呢
- 视图的字段问题
- Oracle存储过程blob参数32k限制如何解决????
- 在存储过程中用动态SQL建表,返回错误'ORA-01031: insufficient privileges'
- 如何通过 ORACLE SQL语句实现如下统计(自身和它的孩子,按照分组统计)
- pro*c 存储过程,java存储过程,SQLJ哪个速度最快
- 在开发中,应该给开发人员什么样的权限?
- 满分挑战:长时间的导数据过程中,触发器如何工作?
- PLSQL执行时间如何看?
- plsqldev支持oracleXE吗?
- SQL 按照每个小时进行分组的sql语句,高手请!
随便改成个常量试试?
java程序对这个值rs 这个值先进行判断,如果不存在记录,则处理之.
CREATE OR REPLACE PACKAGE "TYPES"
AS
TYPE refcursor IS REF CURSOR;
END; //创建存储过程
CREATE OR REPLACE PROCEDURE obtainpartnumberproc (
leftobid IN VARCHAR2,
rst IN OUT TYPES.refcursor
)
IS
v_sqlstring VARCHAR2 (1000);
BEGIN
v_sqlstring :=
'SELECT CLASS2,RIGHT,W2ISBORROWED FROM PDMM31A.ASSMSTRC WHERE LEFT='
|| leftobid; OPEN rst FOR v_sqlstring;
END obtainpartnumberproc; //在java中我是这样调用的
CallableStatement cstmt = null ;
ResultSet rs = null ;
try{
string callSql = "{ call obtainpartnumberproc( ?,? )}";
//leftobid为一字符串变量
cstmt.setString( 1,leftobid);
cstmt.registerOutParameter( 2,oracle.jdbc.OracleTypes.CURSOR ) ;
cstmt.execute();
rs = ( ResultSet )cstmt.getObject( 2 );
while (rs.next()) {
……
}
}可是cstmt.setString( 1,leftobid )报错,错误信息为:java.lang.NullPointerException ,
不知道错在哪里……我想实现的功能是:将字符串变量传给obtainpartnumberproc存储过程,并且对查询的记录集进行其他的操作!
朋友帮忙看看,我的代码写得有问题吗?
这个值leftobid可能是空值,所以当你引用它的时候,报了空指针异常.
cstm = connection.prepareCall(callSql);