【问题标题】:ORA-06550: line 1, column 7: PLS-00201: identifier 'PAYMENT_UPDATE' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignoredORA-06550:第 1 行,第 7 列:PLS-00201:必须声明标识符“PAYMENT_UPDATE” ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略
【发布时间】:2017-04-04 05:37:25
【问题描述】:

我有一个将值插入一个表并更新另一个表的行的过程。该程序编译没有任何错误。如果我在 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());
   }

单击此按钮时,我收到一个错误粘贴在上面作为问题。 有人可以帮我吗?我不知道我需要声明什么。

【问题讨论】:

  • 你连接到正确的架构了吗?
  • 是的,它已更正为正确的架构。
  • 我认为您的问题出在您的 DBMS 中,而不是 Java,请查看此链接 experts-exchange.com/questions/21851939/…
  • 如果您连接到的用户帐户不是 proc 的所有者,您必须为该项目的登录用户帐户创建授权和同义词。这意味着您的 Java 应用程序正在登录的用户帐户不“知道”存储过程。
  • 您是否检查过运行代码的用户对该过程具有执行权限?将 授予执行到

标签: oracle stored-procedures jdbc runtime-error


【解决方案1】:

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

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

【讨论】:

  • 我做了同样的解决方案,但问题是一样的。它没有解决
【解决方案2】:

PLS-00201:必须声明标识符“PROC_NAME” ORA-06550:第 1 行,第 7 列:

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

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多