PL / SQL过程/功能

时间:2018-10-30 18:12:09

标签: oracle plsql

我正在尝试使用一个输入参数(发票编号)编写函数invoiceCheck,以检查发票是否存在于数据库中。

Create or replace function invoiceCheck(invoice_number_text IN
char)
 RETURN char IS
invoice_id_text invoices.invoice_id%type;
invoice_total_text invoices.invoice_total%type;
invoice_due_date_text invoices.invoice_due_date%type;
BEGIN
select invoice_total
into invoice_total_text
from invoices
where invoices.invoice_number=invoice_number_text ;
return invoice_total_text;
END; 

我还编写了一个过程InvoiceDetail,该过程具有一个输入参数(发票编号)。在该过程中,我调用了函数invoiceCheck来检查发票是否存在,如果是,我想显示该发票的invoice_idinvoice_totalinvoice_due_date。如果没有,我想从我的程序中打印出一条消息“invoice not in the database”。这是我的程序:

Create or replace procedure InvoiceDetail(invoice_number_text IN
char) IS
exist_invoice_number char;
invoice_total_text invoices.invoice_total%type;
invoice_id_text invoices.invoice_id%type;
invoice_due_date_text invoices.invoice_due_date%type;
BEGIN
select count(*) into exist_invoice_number from invoices
where invoices.invoice_id = invoice_id_text;
if exist_invoice_number is not null  then
invoice_id_text := invoiceCheck(invoice_number_text);
 invoice_total_text := invoiceCheck(invoice_number_text);
 invoice_due_date_text := invoiceCheck(invoice_number_text);
dbms_output.put_line('Invoice ID:' ||invoice_id_text);
 dbms_output.put_line('Invoice Total:' ||invoice_total_text);
 dbms_output.put_line ( 'Invoice Due Date:' || invoice_due_date_text);
else
 dbms_output.put_line('Invoice not in the database');
end if;
END;

当我使用以下命令执行发票编号QP58872时:

set SERVEROUTPUT ON;
execute InvoiceDetail('QP58872');

我收到此错误

  

ORA-01861:文字与格式字符串不匹配

0 个答案:

没有答案