На сервере domino у меня есть соединение odbc с системой as400. Я могу запустить программу на AS400, и отправить параметр входного сигнала:callablestatement as400 не работает
var sql:string ="CALL QSYS.QCMDEXC('SBMJOB CMD(CALL PGM(DEMO/TESTDEMO) PARM(ABCDEF)) ',0000000048.00000)";
ps = con.prepareCall(sql);
ps.execute();
Ницца, работает, но теперь я хотел бы получить некоторые данные обратно. я думал, что я должен был сделать это с CallableStatement, поэтому я попытался:
var con:Connection = null;
var cs:CallableStatement = null;
try {
java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
var con:java.sql.Connection=java.sql.DriverManager.getConnection(url,usr,pwd);
sessionScope.error = sessionScope.error +"connection set /";
var sql:string ="CALL QSYS.QCMDEXC('CALL PGM(DEMO/TESTDEMO) (?,?))";
sessionScope.error = sessionScope.error +"sql set /";
cs = con.prepareCall (sql);
sessionScope.error = sessionScope.error +"cs set /";
cs.setString (1,'test');
sessionScope.error = sessionScope.error +"input param set /";
cs.registerOutParameter (2, Types.VARCHAR);
sessionScope.error = sessionScope.error +"output param set /";
cs.execute();
sessionScope.error = sessionScope.error +"executed /";
var retour = cs.getInt (2);
sessionScope.error = sessionScope.error +"output /"+retour;
if (cs != null) {cs.close();sessionScope.error = sessionScope.error + "/ cs closed"}
if (con != null) {con.close();sessionScope.error = sessionScope.error + "/ con closed"}
}
catch (e){
sessionScope.error = sessionScope.error+"Sql error ="+e.toString();
if (cs != null) {cs.close();sessionScope.error = sessionScope.error + "/ cs closed"}
if (con != null) {con.close();sessionScope.error = sessionScope.error + "/ con closed"}
return;
}
При запуске этого я получаю как ошибка:
набора параметров/SQL набора/CS множества/Sql ошибка = java.lang.NullPointerException/cs closed/con closed
Так что проблема заключается в настройке входного параметра.
Эта процедура должна быть выполнена на IBM i? Как я могу получить данные в ssjs для данного примера? –
@MarcJonkers Сохраненная процедура должна быть определена в DB2 на сервере. Надеюсь, сервер является одной из систем, которые заменили AS/400s много лет назад. Если он достаточно взрослый, чтобы быть фактическим «AS/400», вам может понадобиться помощь в создании SP. – user2338816
Похоже, имя нацистов присутствует в StackOverflow. «IBM i» - это новое имя операционной системы, которая работает в AS/400. Он заменяет и эквивалентно (с улучшениями) 'OS/400'. 'Power Systems' или' Pure Systems' - это новое имя аппаратного обеспечения, которое называлось 'AS/400'. В сообществе есть люди, которые борются за именование. Но 'OS/400' относится к' Windows 2.0', так как 'IBM i v7.3' относится к' Windows 10'. Но мы все еще называем это 'Windows'. И многие еще называют его 'AS/400'. Примечание: 'AS/400' был пакетной сделкой, неумолимо связанной с' OS/400'. Это уже не так. – jmarkmurphy