【发布时间】:2014-04-30 15:28:41
【问题描述】:
我正在尝试从我的 .xsjs 文件调用 java 中的存储过程。该过程获得 2 个输入参数并返回一个。我可以通过以下方式从 SQL 控制台毫无问题地调用它:
call "MYSCHEMA"."MyPackage.procedures::addUserC50" ('name', 'lastname', ?)
这是我的 .xsjs 文件中的代码,我认为它在 prepareCall 语句中失败了。我尝试了不同的组合(带和不带双引号,带和不带模式/包的名称,带和不带“(?,?,?)”,带和不带“{}”......但什么都没有有效,当我尝试执行它时,我总是收到 500 Internal server error。
有谁知道错误在哪里或者 prepareCall 方法的确切语法是什么?
var output = 0,
query = "";
var conn;
var cstmt;
try {
conn = $.db.getConnection();
query = "{ call \"MYSCHEMA\".\"MyPackage.procedures/addUserC50\"(?,?,?) }";
cstmt = conn.prepareCall(query); // <-- Fails
cstmt.setString(1, userName);
cstmt.setString(2, userLastname);
cstmt.execute();
output = cstmt.getInteger(3);
conn.commit();
$.response.status = $.net.http.OK;
$.response.setBody("Successfully created: " + output);
}
catch (e) {
$.response.status = $.net.http.BAD_REQUEST;
$.response.setBody("0");
}
finally {
if (cstmt !== null)
cstmt.close();
if (conn !== null)
conn.close();
}
这是返回的错误:InternalError: dberror(Connection.prepareCall): 328 - invalid name of function or procedure: MyPackage.procedures/addUserC50: line 1 col 18 (at pos 17) at ptime/query/checker /check_call.cc:21
根据这个documentation,应该是这样的
var myCallableStatement = myconnection.prepareCall("{call myprocedure(?)}");
谢谢
【问题讨论】:
标签: javascript stored-procedures hana