Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java代码调用存储过程,得到错误PLS-00201:必须声明标识符_Java_Stored Procedures_Java Stored Procedures - Fatal编程技术网

通过Java代码调用存储过程,得到错误PLS-00201:必须声明标识符

通过Java代码调用存储过程,得到错误PLS-00201:必须声明标识符,java,stored-procedures,java-stored-procedures,Java,Stored Procedures,Java Stored Procedures,我将使用在先前代码中构建的结果集,可以看到在调试器中运行时从该列表中提取的值。当我尝试执行存储过程调用时,调用失败,callableStatement.execute();,出现以下错误: PLS-00201:必须声明标识符“INFPL01.LWN\u XML\u PURCHASEORDER” ORA-06550:第1行第7列: PL/SQL:忽略语句 这是我的密码: public List<ProcedureResult> callLWN_XML_PURCHASEORDERPro

我将使用在先前代码中构建的结果集,可以看到在调试器中运行时从该列表中提取的值。当我尝试执行存储过程调用时,调用失败,callableStatement.execute();,出现以下错误:

PLS-00201:必须声明标识符“INFPL01.LWN\u XML\u PURCHASEORDER” ORA-06550:第1行第7列: PL/SQL:忽略语句

这是我的密码:

public List<ProcedureResult> 
callLWN_XML_PURCHASEORDERProcedureAndSendMQMEssage(List<YmpohdroutDbo> list)
{
    DSConnection dsc = new DSConnection();

    Connection dbConnection = null;
    CallableStatement callableStatement = null;

    String LWN_XML_PURCHASEORDER_Sql = "{call "+PurchaseOrder.dbProperties.getProperty("Schema") +".LWN_XML_PURCHASEORDER(?,?,?,?,?,?,?)}";
    /*
     * stored procedure LWN_XML_PURCHASEORDER
     * 
     *  in_company IN NUMBER,
        in_PO_NUMBER IN VARCHAR2,
        in_po_release IN NUMBER,
        in_po_code IN VARCHAR2,
        in_object_TYPE IN VARCHAR2,
        RET_CODE OUT NUMBER,
        RET_MSG OUT CLOB)
    */

    List<ProcedureResult> result = new ArrayList<ProcedureResult>();

    try {
        dbConnection = dsc.getConnection();

        YmpohdroutDbo obj;
        ProcedureResult res;
        for(int i=0;i<list.size();i++)
        {
            obj = list.get(i);

            callableStatement = dbConnection.prepareCall(LWN_XML_PURCHASEORDER_Sql);

            // register input fields of stored procedure
            callableStatement.setInt(1, obj.getCompany());
            callableStatement.setString(2, obj.getPO_Number());
            callableStatement.setInt(3, obj.getPO_Release());
            callableStatement.setString(4, obj.getPO_Code());
            callableStatement.setString(5, (PurchaseOrder.projProperties.getProperty(Constants.SEC_KEY_COMMENT_TYPE))); 

            // register output fields of stored procedure 
            callableStatement.registerOutParameter(6, java.sql.Types.INTEGER);
            callableStatement.registerOutParameter(7, java.sql.Types.CLOB);

            // execute LWN_XML_PURCHASEORDER store procedure
            callableStatement.execute();

            res = new ProcedureResult();
            res.setCode(callableStatement.getInt(6));
            res.setMessage(callableStatement.getClob(7));

                // send response from stored procedure execution to MQMessages
                PurchaseOrder.writeClobMQMessage(res.getMessage());

                // mark record as processed by updating field INTERFACE_STS to P
                markRecordAsProcessed(obj, dsc);

                // Send procedures result as MQMessage before processing next record
                result.add(res);
        }   
    } catch (Exception e) {

        logger.error(e);
        System.exit(1);
    } finally {

        if (callableStatement != null) 
        {
            try
            {
                callableStatement.close();
            } 
            catch (SQLException e) 
            {
                logger.error(e);
            }
        }
        if (dbConnection != null) {
            DSConnection.close(dbConnection, null, callableStatement, null);
        }
    }
    return result;
}
公共列表
callLWN_XML_PURCHASEORDERProcedureAndSendMQMEssage(列表)
{
DSConnection dsc=新的DSConnection();
连接dbConnection=null;
CallableStatement CallableStatement=null;
字符串LWN_XML_PURCHASEORDER_Sql=“{call”+PURCHASEORDER.dbProperties.getProperty(“Schema”)+”.LWN_XML_PURCHASEORDER(?,,,,,,,,,,?)}”;
/*
*存储过程LWN\u XML\u PURCHASEORDER
* 
*在数量上,
在VARCHAR2中的\u PO\u编号中,
在发布数量上,
在VARCHAR2中的\u po\u代码中,
在VARCHAR2中的对象类型中,
RET_代码输出编号,
RET_MSG OUT CLOB)
*/
列表结果=新建ArrayList();
试一试{
dbConnection=dsc.getConnection();
YmpohdroutDbo obj;
程序结果;

对于(int i=0;i存储过程
LWN\u XML\u PURCHASEORDER
是否存在于架构
INFPL01
中?您如何验证名称是否正确?您运行的DB登录用户是否具有查看/执行该过程的必要权限?嗨,Jim,感谢您的响应,我已经验证了命名约定是否正确nd它确实存在于架构INFPL01中。我使用Rapid SQL,我可以调出存储过程并将我的值传递到并获得预期的响应。我们使用可访问此过程的受信任用户帐户。您是否连接到正确的数据库实例?您如何知道
dsc.getConnection()
返回了正确的连接?您验证了吗?显然,您连接到的任何实例都不相信该过程存在。您是否有测试和部署的实例?顺便说一句,这些都是您在发布之前应该问自己的问题,发布时您应该说明所有的故障排除步骤完成。谢谢你的提示Jim!我是新来的,你可能可以从我的低数字ha中看出。我现在正在调查连接,谢谢你的建议。我想这是我构建字符串调用过程的方式的问题。