//创建包,在包中创建refcursor
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( ?,? )}";
cstmt = con.prepareCall(callSql);
//leftobid为一字符串变量
cstmt.setString( 1,leftobid);
cstmt.registerOutParameter( 2,oracle.jdbc.OracleTypes.CURSOR ) ;
cstmt.execute();
rs = ( ResultSet )cstmt.getObject( 2 );
while (rs.next()) {
……
}
}
在执行时报下列错误:
java.sql.SQLException: ORA-00942: 表或视图不存在
ORA-06512: 在"SYSTEM.OBTAINPARTNUMBERPROC", line 12
ORA-06512: 在line 1 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289
…………请问我的这段代码错误在哪里呢?
PDMM31A.ASSMSTRC
PDMM31A是用户名,ASSMSTRC是表名,是吗?那么java代码中,创建连接时用的用户名是什么?
他有权限能看到PDMM31A.ASSMSTRC这张表吗?
grant select on PDMM31A.ASSMSTRC to java中的用户;