我正在尝试使用一个输入参数(发票编号)编写函数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_id
,invoice_total
和invoice_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:文字与格式字符串不匹配