If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

 
Go Back  dBforums > Database Server Software > Informix > Help me please

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 06-15-04, 03:43
CaBiRuT CaBiRuT is offline
Registered User
 
Join Date: Jun 2004
Posts: 1
Help me please

I need some help please, how I can translate this procedure to Informix SQL? I need Informix sql not informix 4gl.

Thanks.

CREATE PROCEDURE traspaso_plazas ()

BEGIN

DECLARE entidad integer;
DECLARE natu varchar(2);
DECLARE plaz integer;
DECLARE dota integer;
DECLARE fase integer;
DECLARE vers integer;
DECLARE fini date;
DECLARE finib date;
DECLARE ffin date;
DECLARE contador integer;
DECLARE version integer;

DECLARE err_notfound EXCEPTION
FOR SQLSTATE '02000' ;


DECLARE cur_partes CURSOR FOR
SELECT yfaseplaz_v.codienti,
yfaseplaz_v.natuplaz,
yfaseplaz_v.coditpla,
yfaseplaz_v.codiplaz,
yfaseplaz_v.numefase,
yfaseplaz_v.versfase,
yfaseplaz_v.finivers,
yfaseplaz_v.ffinvers,
(SELECT COUNT(*)
FROM yfaseplaz_v y
WHERE y.codienti = yfaseplaz_v.codienti
and y.natuplaz = yfaseplaz_v.natuplaz
and y.coditpla = yfaseplaz_v.coditpla
and y.codiplaz = yfaseplaz_v.codiplaz
and y.numefase = yfaseplaz_v.numefase
having count(*) > 1) versiones,
(SELECT finivers
FROM yfaseplaz_v y1
WHERE y1.codienti = yfaseplaz_v.codienti
AND y1.natuplaz = yfaseplaz_v.natuplaz
AND y1.coditpla = yfaseplaz_v.coditpla
AND y1.codiplaz = yfaseplaz_v.codiplaz
AND y1.numefase = yfaseplaz_v.numefase
AND y1.versfase = yfaseplaz_v.versfase + 1) version
FROM yfaseplaz_v
ORDER BY
yfaseplaz_v.codienti,
yfaseplaz_v.natuplaz,
yfaseplaz_v.coditpla,
yfaseplaz_v.codiplaz,
yfaseplaz_v.numefase,
yfaseplaz_v.versfase;

OPEN cur_partes;

PartesLoop:
LOOP
FETCH NEXT cur_partes
into entidad,natu,plaz,dota,fase,vers,fini,ffin,contado r,finib;
IF SQLSTATE = err_notfound THEN
LEAVE PartesLoop;
END IF ;

IF vers < contador THEN

IF ffin IS NULL THEN


UPDATE yfaseplaz_v SET ffinvers=finib
WHERE yfaseplaz_v.codienti=entidad
AND yfaseplaz_v.natuplaz=natu
AND yfaseplaz_v.coditpla=plaz
AND yfaseplaz_v.codiplaz=dota
AND yfaseplaz_v.numefase=fase
and yfaseplaz_v.versfase = vers;

END IF;

END IF;

END LOOP PartesLoop;
CLOSE cur_partes;

END;
Reply With Quote
  #2 (permalink)  
Old 06-15-04, 07:18
gurey gurey is offline
Registered User
 
Join Date: Aug 2003
Location: Argentina
Posts: 780
Hi,

Replace DECLARE for DEFINE.
I'm not remember the sentence:
DECLARE err_notfound EXCEPTION
FOR SQLSTATE '02000'
Please review Ibm-Informix SQL-Syntax.

Gustavo.
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On