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 应用程序正在登录的用户帐户不“知道”存储过程。 您是否检查过运行代码的用户对该过程具有执行权限?将我遇到了同样的问题并想出了解决方案。 实际上,当我搜索答案时,其他帖子提到“可能存在权限问题”。这是放弃这里的情况。作为解决方法或解决方案需要执行以下操作: - 放弃你的 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:第 13 行,第 4 列:PLS-00103:遇到“UPDATE” ORA-06550:第 15 行,第 3 列:PLS-00103:遇到符号“END”
ORA-06550 第 10 行,第 41 列:PLS-00103:在预期以下情况之一时遇到符号“,”:
ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550: