javascript - Call a Stored Procedure in HANA - Stack Overflow

I am trying to call a stored procedure in java from my .xsjs file. The procedure gets 2 input parameter

I am trying to call a stored procedure in java from my .xsjs file. The procedure gets 2 input parameters and returns one. I can call it from an SQL console without any problem by writing:

call "MYSCHEMA"."MyPackage.procedures::addUserC50" ('name', 'lastname', ?)

This is the code in my .xsjs file, I think that it fails in the prepareCall statement. I have tried different binations (with and without double quotation marks, with and without the name of the schema/package, with and without "(?,?,?)", with and without "{ }".... But nothing works, I always get the 500 Internal server error when I try to execute it.

Does anybody know where the error is or what is the exact syntax for the prepareCall method?

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);

    connmit(); 

    $.response.status = $.http.OK;
    $.response.setBody("Successfully created: " + output);

}
catch (e) {
    $.response.status = $.http.BAD_REQUEST;
    $.response.setBody("0");

}
finally {
    if (cstmt !== null) 
        cstmt.close();
    if (conn !== null) 
        conn.close();
}

This is the error that gives back: 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:21

According to this documentation, it should be something like

var myCallableStatement = myconnection.prepareCall("{call myprocedure(?)}");

Thank you

I am trying to call a stored procedure in java from my .xsjs file. The procedure gets 2 input parameters and returns one. I can call it from an SQL console without any problem by writing:

call "MYSCHEMA"."MyPackage.procedures::addUserC50" ('name', 'lastname', ?)

This is the code in my .xsjs file, I think that it fails in the prepareCall statement. I have tried different binations (with and without double quotation marks, with and without the name of the schema/package, with and without "(?,?,?)", with and without "{ }".... But nothing works, I always get the 500 Internal server error when I try to execute it.

Does anybody know where the error is or what is the exact syntax for the prepareCall method?

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.mit(); 

    $.response.status = $.http.OK;
    $.response.setBody("Successfully created: " + output);

}
catch (e) {
    $.response.status = $.http.BAD_REQUEST;
    $.response.setBody("0");

}
finally {
    if (cstmt !== null) 
        cstmt.close();
    if (conn !== null) 
        conn.close();
}

This is the error that gives back: 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:21

According to this documentation, it should be something like

var myCallableStatement = myconnection.prepareCall("{call myprocedure(?)}");

Thank you

Share Improve this question edited May 1, 2014 at 9:54 Lidia asked Apr 30, 2014 at 15:28 LidiaLidia 511 silver badge7 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

I managed to make it run, this is the syntax that worked:

query = "call \"MyPackage.procedures::addUserC50\"(?, ?, ?)";

Thank you for your help @shofmn

There could be different reasons why the call is failing. You can investigate your error much easier if you return the error message in the HTTP response. You can do this easily:

try {
   // Your code execution here
}
catch (e) {
   $.response.contentType = "text/html";
   $.response.setBody(e.name + ": " +  e.message));
}

If the error message doesn't help you solving the problem, paste the error message in here so that it is more easy for us to investigate as well.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744294405a4567190.html

相关推荐

  • javascript - Call a Stored Procedure in HANA - Stack Overflow

    I am trying to call a stored procedure in java from my .xsjs file. The procedure gets 2 input parameter

    7天前
    60

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信