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

Posted

技术标签:

【中文标题】ORA-06550:第 1 行,第 7 列:PLS-00201:必须声明标识符“PAYMENT_UPDATE” ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略【英文标题】:ORA-06550: line 1, column 7: PLS-00201: identifier 'PAYMENT_UPDATE' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored 【发布时间】: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 应用程序正在登录的用户帐户不“知道”存储过程。 您是否检查过运行代码的用户对该过程具有执行权限?将 授予执行到 【参考方案1】:

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

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

【讨论】:

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

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

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

【讨论】:

以上是关于ORA-06550:第 1 行,第 7 列:PLS-00201:必须声明标识符“PAYMENT_UPDATE” ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略的主要内容,如果未能解决你的问题,请参考以下文章

“ORA-06550: 第 1 行, 第 7 列”解决方法

ORA-06550:第 13 行,第 4 列:PLS-00103:遇到“UPDATE” ORA-06550:第 15 行,第 3 列:PLS-00103:遇到符号“END”

ORA-06550 第 10 行,第 41 列:PLS-00103:在预期以下情况之一时遇到符号“,”:

ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:

ORA-06550:第5行,第16列:PLS-00103:当遇到以下情况之一时遇到符号“SELECT”:[重复]

ORA-06550,PLS-00306;向 Oracle 过程插入数据时出错