调用MobileFirst SQLAdapter时出现SQLException

时间:2015-07-03 11:27:45

标签: db2 sqlexception ibm-mobilefirst mobilefirst-adapters

我收到此错误:

  

FWLSE0101E:引起:[project ***] com.ibm.db2.jcc.am.SqlException:DB2 SQL Error:SQLCODE = -313,SQLSTATE = 07004,SQLERRMC = null,DRIVER = 3.66.46 java。 lang.RuntimeException:DB2 SQL错误:SQLCODE = -313,SQLSTATE = 07004,SQLERRMC = null,DRIVER = 3.66.46。   执行查询:   更新帐户设置regTstamp =(当前时间戳),其中accountId =?

调用SQLAdapter时 这是调用过程:

var AcceptTocInvokeData = {
    adapter : 'DataAdapter',
    procedure : 'updateAcceptTocDate',
    params: [accountId]
};

WL.Client.invokeProcedure(AcceptTocInvokeData, {
    onSuccess: function(resp) {
        deferred.resolve(resp);
    },
    onFailure: function(resp) {
        deferred.reject(resp);
    }
});

和SQLAdapter代码:

var prepStmt = WL.Server.createSQLStatement("update account set regTstamp = (current timestamp) where accountId = ?");

function updateAcceptTocDate(accountId) {       
    return WL.Server.invokeSQLStatement({
        preparedStatement: prepStmt,
        parameters: [accountId]
    });
}

如果我从MobileFirst Studio(Run as ...)调用适配器,它可以正常工作。 有人知道发生了什么吗?

2 个答案:

答案 0 :(得分:2)

如果查看SQLCODE -313的DB2手册,您可能会看到如下内容:

  

EXECUTE语句中的变量数,OPEN语句中的变量数或参数化游标的OPEN语句中的参数数量不等于所需值的数量。

显然,参数未绑定到预准备语句。

答案 1 :(得分:1)

我自己得到了解决方案:
我在invokeData中写道params而不是parameters