- 论坛徽章:
- 0
|
请教数据库高手怎么样在a存储过程调用b存储过程????
test 存储过程:import java.sql.*; // JDBC ?
public class Test
{
public static void test ( int var, ResultSet[] rs ) throws SQLException, Exception
{
Connection con = DriverManager.getConnection("jdbc:default:connection" ;
PreparedStatement stmt = null;
String sql;
sql = "SELECT ADMINISTRATOR.USER.ID AS ID, ADMINISTRATOR.USER.PASSWORD AS PASSWORD,"
+ " ADMINISTRATOR.USER.NAME AS NAME, ADMINISTRATOR.USER.EMAIL AS EMAIL"
+ " FROM ADMINISTRATOR.USER"
+ " WHERE ( ADMINISTRATOR.USER.ID = ? )";
stmt = con.prepareStatement( sql );
stmt.setInt( 1, var );
rs[0] = stmt.executeQuery();
}
}
test1存储过程: */
import java.sql.*; // JDBC ?
public class Test1
{
public static void test1 ( ResultSet[] rs ) throws SQLException, Exception
{
Connection con = DriverManager.getConnection("jdbc:default:connection" ;
PreparedStatement stmt = null;
CallableStatement Cstmt = null;
ResultSet rs1 =null;
String sql="";
//-----这段注释了该存储过程能正常构建并运行
Cstmt =con.prepareCall("{call ADMINISTRATOR.TEST (?) }" ;
Cstmt.setInt(1,1);
rs[1] =Cstmt.executeQuery();//经调试这步开始运行不下去
while (rs1.next()) {
String NAME = rs1.getString(2)+" TEST";
int ID = rs1.getInt(1);
}
rs1.close();
Cstmt.close();
//-----这段注释了该存储过程能正常构建并运行
sql = "SELECT ADMINISTRATOR.USER.ID AS ID, ADMINISTRATOR.USER.NAME AS NAME,"
+ " ADMINISTRATOR.USER.PASSWORD AS PASSWORD, ADMINISTRATOR.USER.EMAIL AS EMAIL"
+ " FROM ADMINISTRATOR.USER";
stmt = con.prepareStatement( sql );
rs[0] = stmt.executeQuery();
}
}
错误信息:
ADMINISTRATOR.TEST1 - 正在调用存储过程。
[IBM][CLI Driver][DB2/NT] SQL4302N Java 存储过程或用户定义的函数 "ADMINISTRATOR.TEST1",特定名 "SQL050510112005460" 由于异常 "[IBM][CLI Driver][DB2/NT] SQL0" 而异常中止。 SQLSTATE=38501
ADMINISTRATOR.TEST1 - 更改回滚。
ADMINISTRATOR.TEST1 - 调用存储过程完成。 |
|