我有一个过程将值插入一个表并更新另一个表的行。编译过程没有任何错误。如果我在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());
}
点击此按钮,我在上面粘贴了一个错误作为问题。 有人可以帮帮我吗?我无法弄清楚我需要申报的内容。
答案 0 :(得分:0)
我遇到了同样的问题,并找到了解决方案。 实际上,当我搜索答案时,其他帖子提到'可能有许可问题'。这是退出这里的情况。作为解决方法或解决方案需要执行以下操作: -Drop你SP。 - 使用参数重新创建SP(即最终的SP)
您可能先创建了SP,然后在参数部分中进行了一些更改。 看看这是否有帮助。但是,它确实在我的情况下。
答案 1 :(得分:0)
PLS-00201:标识符' PROC_NAME'必须申报 ORA-06550:第1行,第7栏:
我能够通过创建程序的同义词来解决问题。