Creating a stored procedure with an "update or insert" statement with returning 
value  fails
--------------------------------------------------------------------------------------------

                 Key: CORE-3966
                 URL: http://tracker.firebirdsql.org/browse/CORE-3966
             Project: Firebird Core
          Issue Type: Bug
    Affects Versions: 3.0 Initial
         Environment: probably all (tested with Windows 7 and Ubuntu 12.04)
            Reporter: Frank Schlottmann-Goedde
            Priority: Critical


Using the following script in isql against the employee database demonstrates 
the error

/*
Creating a stored procedure with an "update or insert" statement with returning 
value 
fails with:

Invalid token.
invalid request BLR at offset 364.
context not defined (BLR error).
Error while parsing procedure P_BETEILIGUNG_IU's BLR.
*/
SET TERM ^ ;
create or alter procedure P_BETEILIGUNG_IU (
    GID char(36) character set ISO8859_1 collate ISO8859_1,
    GID_BETEILIGUNGS_VERHAELTNIS char(36) character set ISO8859_1 collate 
ISO8859_1,
    GID_VRINFO char(36) character set ISO8859_1 collate ISO8859_1,
    GID_AGNR char(36) character set ISO8859_1 collate ISO8859_1,
    ANTEIL numeric(18,3),
    ORDERNR integer,
    GUELTIG_AB date,
    GUELTIG_BIS date,
    FUEHRENDE_PRAEMIE char(1) character set ISO8859_1 collate ISO8859_1,
    FUEHRENDE_COURTAGE char(1) character set ISO8859_1 collate ISO8859_1,
    GID_ZAHLART char(36) character set ISO8859_1 collate ISO8859_1,
    GID_POLICEN_BETEILIGTE char(36) character set ISO8859_1 collate ISO8859_1,
    VSNRVR varchar(36) character set ISO8859_1 collate ISO8859_1,
    VSNR varchar(36) character set ISO8859_1 collate ISO8859_1)
as
declare variable VON date;
declare variable BIS date;
declare variable GID_POLICEN char(36);
declare variable GID_POLICEN_OR_DETAIL char(36);
declare variable ALLE_SOLLST_NEUMACHEN char(1);
declare variable GID_BETEILIGUNG char(36);
declare variable D char(1);
declare variable po_number char(8);
declare variable cust_no integer;
declare variable sales_rep smallint;
declare variable order_status varchar(7);
declare variable order_date timestamp;
declare variable ship_date timestamp;
declare variable date_needed timestamp;
declare variable paid char(1);
declare variable qty_ordered integer;
declare variable total_value decimal(9,2);
declare variable discount float;
declare variable item_type varchar(12);
declare variable aged numeric(18,9);
begin
  if (ORDERNR is null) then
  begin
    select max(B.QTY_ORDERED) + 1
    from SALES B
    where B.item_type = :GID_BETEILIGUNGS_VERHAELTNIS
    into :ORDERNR;
   end
  update or insert into SALES (PO_NUMBER, CUST_NO, SALES_REP, ORDER_STATUS, 
ORDER_DATE, SHIP_DATE, DATE_NEEDED, PAID,
                               QTY_ORDERED, TOTAL_VALUE, DISCOUNT, ITEM_TYPE)
  values (:PO_NUMBER, :CUST_NO, :SALES_REP, :ORDER_STATUS, :ORDER_DATE, 
:SHIP_DATE, :DATE_NEEDED, :PAID, :QTY_ORDERED,
          :TOTAL_VALUE, :DISCOUNT, :ITEM_TYPE)
  matching (PO_NUMBER)
  returning (PO_NUMBER)
  into :PO_NUMBER;

end^
SET TERM ; ^


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
The Windows 8 Center - In partnership with Sourceforge
Your idea - your app - 30 days.
Get started!
http://windows8center.sourceforge.net/
what-html-developers-need-to-know-about-coding-windows-8-metro-style-apps/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to