Hi Martijn, Maybe it is too obvious, but it looks like your body has four routines and your header only three (CHECK_INVOICE_EXISTS is missing), hence the signutare mismatch. Kind regards, Robert
From: Martijn Tonies (Upscene Productions) Sent: Monday, October 27, 2014 12:54 PM To: firebird-devel@lists.sourceforge.net Subject: [Firebird-devel] Beta 1: recreating package fails with "signaturemismatch" error 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
------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel