Hi,
I noticed this in a recent nightly build last Saturday, it’s still there in
Beta 1.
I have a package, with a routine, when I tried modifying the body, it returns
an error:
----8<----
unsuccessful metadata update
RECREATE PACKAGE BODY C_INVOICE failed
Procedure ADD_ORDER_TO_INVOICE has a signature mismatch on package body
C_INVOICE
while executing:
RECREATE PACKAGE BODY C_INVOICE AS
begin
function CHECK_INVOICE_EXISTS(InvoiceID T_KEY_INT_REQUIRED) returns boolean as
begin
if (not exists(select * from invoices where id = :InvoiceID))
then exception object_does_not_exist using ('Invoice', InvoiceID);
else return True;
end
function INVOICE_ORDER(OrderID T_KEY_INT_REQUIRED) returns T_KEY_INT_REQUIRED
as
declare variable CustomerID T_KEY_INT_OPTIONAL;
declare variable InvoiceID T_KEY_INT_REQUIRED;
begin
CustomerID = C_ORDER.GET_CUSTOMER_ID(OrderID);
InvoiceID = CREATE_INVOICE(CustomerID);
execute procedure ADD_ORDER_TO_INVOICE(InvoiceID, OrderID);
return InvoiceID;
end
function CREATE_INVOICE(CustomerID T_KEY_INT_REQUIRED) returns
T_KEY_INT_REQUIRED as
declare variable InvoiceID T_KEY_INT_REQUIRED;
begin
insert into invoices (Customer_ID)
values (:CustomerID)
returning ID into :InvoiceID;
return InvoiceID;
end
procedure ADD_ORDER_TO_INVOICE(InvoiceID T_KEY_INT_REQUIRED, OrderID
T_KEY_INT_REQUIRED) as
begin
CHECK_INVOICE_EXISTS(InvoiceID);
insert into invoice_order(Invoice_ID, Order_ID)
values (:InvoiceID, :OrderID);
end
end
----8<----
This is the package header:
---8<---
begin
function INVOICE_ORDER(OrderID T_KEY_INT_REQUIRED) returns T_KEY_INT_REQUIRED;
function CREATE_INVOICE(CustomerID T_KEY_INT_REQUIRED) returns
T_KEY_INT_REQUIRED;
procedure ADD_ORDER_TO_INVOICE(InvoiceID T_KEY_INT_REQUIRED, OrderID
T_KEY_INT_REQUIRED);
end
----8<---
I have no idea what’s wrong, do you?
With regards,
Martijn Tonies
Upscene Productions
------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel