ORA-06550:第1行第7列:PLS-00201:必须声明标识符'PAYMENT_UPDATE'ORA-06550:第1行第7列:PL / SQL:语句被忽略

时间:2017-04-04 05:37:25

标签: oracle stored-procedures jdbc runtime-error

我有一个过程将值插入一个表并更新另一个表的行。编译过程没有任何错误。如果我在PL / SQL代码中手动调用它,则会更新表。

CREATE OR REPLACE PROCEDURE payment_update
      (bId IN number, pType IN varchar2, pAmt IN number )
AS
BEGIN
    INSERT INTO payment 
     VALUES (PID_SEQ.NEXTVAL,
              bId, 
              pType, 
              (SELECT CURRENT_DATE FROM DUAL),
              pAmt);
    UPDATE booking 
        SET payment_status = 'FP', 
          paid = pAmt
    WHERE booking_id = bId;
END;
/

我试图通过单击按钮在Java类中调用此存储过程。用户在GUI框架的文本字段中输入值,这些值需要发送到存储过程。

这是我的Java代码 -

private void payButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    int i = unpaidJTable.getSelectedRow();
    int bookingId =Integer.parseInt(bIdText.getText());
    String pType = pTypeText.getText();
    double pAmt = Double.parseDouble(pAmtText.getText());
    CallableStatement callableStatement = null;
    String paymentUpdateRecord = "{call payment_update(?, ?, ?)}";
    try{
       callableStatement = conn.prepareCall(paymentUpdateRecord);
       callableStatement.setInt(1, bookingId);
       callableStatement.setString(2, pType);
       callableStatement.setDouble(3, pAmt);
       callableStatement.executeUpdate();
       conn.commit();
       System.out.println("Successfully updated!");
   }
    catch(SQLException e){
       System.out.println(e.getMessage());
   }

点击此按钮,我在上面粘贴了一个错误作为问题。 有人可以帮帮我吗?我无法弄清楚我需要申报的内容。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并找到了解决方案。 实际上,当我搜索答案时,其他帖子提到'可能有许可问题'。这是退出这里的情况。作为解决方法或解决方案需要执行以下操作: -Drop你SP。 - 使用参数重新创建SP(即最终的SP)

您可能先创建了SP,然后在参数部分中进行了一些更改。 看看这是否有帮助。但是,它确实在我的情况下。

答案 1 :(得分:0)

PLS-00201:标识符' PROC_NAME'必须申报 ORA-06550:第1行,第7栏:

我能够通过创建程序的同义词来解决问题。