在 Java 中调用 Informix ver(12) 过程
Call Informix ver(12) Procedure in Java
只要没有 OUT 参数,就会调用过程,但只要给出 OUT 参数,就会发生以下错误:
java.sql.SQLException:例程(测试)无法解决。
下面是我的代码:
Class.forName("com.informix.jdbc.IfxDriver");
java.sql.Connection connection =DriverManager.getConnection("jdbc:informix-sqli://server_details");
CallableStatement stmt = null;
String sql = "{call test (?, ?)}";
stmt = connection.prepareCall(sql);
stmt.registerOutParameter(1, java.sql.Types.VARCHAR);
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.execute();
我的带有两个 OUT 参数的 Informix 过程的简单示例由 JDBC CallableStatement
调用有效:
db = DriverManager.getConnection(db_url, usr, passwd)
c = db.createStatement()
try:
c.execute('DROP PROCEDURE test_out_params;')
except:
pass
c.execute("""CREATE PROCEDURE test_out_params(OUT arg1 VARCHAR(200), OUT arg2 VARCHAR(200))
LET arg1 = 'arg1';
LET arg2 = 'arg2';
END PROCEDURE;""")
stmt = db.prepareCall("{call test_out_params (?, ?)}")
stmt.registerOutParameter(1, Types.VARCHAR)
stmt.registerOutParameter(2, Types.VARCHAR)
stmt.executeQuery()
a1 = stmt.getString(1)
a2 = stmt.getString(2)
print('call result: %s %s\n' % (a1, a2))
我在这段代码中使用了 Jython,我得到了:
call result: arg1 arg2
我认为您应该添加 test()
程序的简化源代码和有关您的环境的更多详细信息,尤其是 Informix 服务器版本和 JDBC 驱动程序版本。
只要没有 OUT 参数,就会调用过程,但只要给出 OUT 参数,就会发生以下错误:
java.sql.SQLException:例程(测试)无法解决。
下面是我的代码:
Class.forName("com.informix.jdbc.IfxDriver");
java.sql.Connection connection =DriverManager.getConnection("jdbc:informix-sqli://server_details");
CallableStatement stmt = null;
String sql = "{call test (?, ?)}";
stmt = connection.prepareCall(sql);
stmt.registerOutParameter(1, java.sql.Types.VARCHAR);
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.execute();
我的带有两个 OUT 参数的 Informix 过程的简单示例由 JDBC CallableStatement
调用有效:
db = DriverManager.getConnection(db_url, usr, passwd)
c = db.createStatement()
try:
c.execute('DROP PROCEDURE test_out_params;')
except:
pass
c.execute("""CREATE PROCEDURE test_out_params(OUT arg1 VARCHAR(200), OUT arg2 VARCHAR(200))
LET arg1 = 'arg1';
LET arg2 = 'arg2';
END PROCEDURE;""")
stmt = db.prepareCall("{call test_out_params (?, ?)}")
stmt.registerOutParameter(1, Types.VARCHAR)
stmt.registerOutParameter(2, Types.VARCHAR)
stmt.executeQuery()
a1 = stmt.getString(1)
a2 = stmt.getString(2)
print('call result: %s %s\n' % (a1, a2))
我在这段代码中使用了 Jython,我得到了:
call result: arg1 arg2
我认为您应该添加 test()
程序的简化源代码和有关您的环境的更多详细信息,尤其是 Informix 服务器版本和 JDBC 驱动程序版本。