Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
J'ai presque honte de poster la question, mais je tourne en rond.
J'ai l'habitude de la base de donnée Informix, mais avec la base de données Sybase la syntaxe est différente et je n'arrive pas à finaliser ma procédure.
Voici le scrit de la procédure :
Alter PROCEDURE "DBA"."proc_delai_echeance"() result(@id_delai_1 char(2),@design_echeance_1 varchar(50),@selection_1 char(1)) on exception resume begin --// ----------------------------------------------------- --// déclaration des variables. --// ----------------------------------------------------- declare @design_delai varchar(50) ; declare @delai_actif char(1); declare @id_echeance char(2); declare @id_echeance_lien char(2); declare @id_delai_lien char(2); declare @id_delai char(2) ; declare @design_echeance varchar(50) ; declare @selection char(1) ; --// ----------------------------------------------------- --// déclaration du curseur sur les délais. --// ----------------------------------------------------- declare cursor_delai cursor for SELECT id, design , delai_actif FROM fi_delaimp WHERE delai_actif ='O' order by design ; --// ----------------------------------------------------- --// déclaration du curseur sur les échéances. --// ----------------------------------------------------- declare cursor_echeance cursor for SELECT id, id_echeance , id_delai , design FROM fi_dlpossech RIGHT OUTER JOIN fi_echemp ON id_echeance = fi_echemp.id ; open cursor_delai ; set @id_delai = 0 ; set @design_delai ='' ; set @delai_actif ='N' ; B1: loop fetch cursor_delai into @id_delai, @design_delai, @delai_actif ; if sqlcode <> 0 then leave B1 end if; -- // a cet endroit je veux affecter la variable id_delai_1 par ce qui est affecté dans id_delai -- //select @id_delai_1 = @id_delai ; open cursor_echeance ; set @selection ='N' ; set @id_echeance =''; set @id_echeance_lien =''; set @id_delai_lien =''; set @design_echeance =''; B2: loop fetch cursor_echeance into @id_echeance, @id_echeance_lien, @id_delai_lien , @design_echeance ; if sqlcode <> 0 then leave B2 end if; -- //================================================================ -- // a cet endroit je veux affecter la variable @design_echeance_1 par ce qui est affecté dans @design_echeance -- //================================================================ -- //select @design_echeance_1 = @design_echeance ; if @id_delai = @id_delai_lien then set @selection ='O' end if; -- //============================================================== -- // a cet endroit je veux affecter la variable @selection_1 par ce qui est affecté dans @selection -- //================================================================ -- //select @selection_1 = @selection ; end loop B2; close cursor_echeance ; end loop B1; close cursor_delai ; end
La procédure n'a aucun paramètre en entrée, et ne doit que retourner des valeurs en retours. Le problème est que je n'arrive pas à affecter les valeurs que doivent être retournées, et pour l'instant la procédure ne retourne rien, bien que au debugger tout se passe bien.
Pouvez vous m'aider.
Merci
:modo: :modo: :modo:
Hors ligne
-- a cet endroit je veux affecter la variable id_delai_1 par ce qui est affecté dans id_delai set @id_delai_1 = @id_delai ;
Hors ligne
erasorz a écrit:
Code: mssql
-- a cet endroit je veux affecter la variable id_delai_1 par ce qui est affecté dans id_delai set @id_delai_1 = @id_delai ;
J'avais essayé cette syntaxe d'après les procédures qui figurent dans ma petite application, mais j'ai l'erreur sqlstate = 37000 variable @id_delai_1 not found lors de l'execution de ma procédure ??
Hors ligne
et la déclaration ?
declare @id_delai_1 char(2);
Hors ligne
erasorz a écrit:
et la déclaration ?
Code: mssql
declare @id_delai_1 char(2);
Mais ce sont les variables que je veux retourner, et que j'ai mis dans la partie result
Alter PROCEDURE "DBA"."proc_delai_echeance"() result(@id_delai_1 char(2),@design_echeance_1 varchar(50),@selection_1 char(1))
, mais ce n'est peut être pas comme cela qu'il faut faire pour retourner des valeurs avec cette base de données ??
Hors ligne
Il te faut déclarer tes paramètres en output
Comme dans PL-SQL (Oracle)
Hors ligne
foon a écrit:
Il te faut déclarer tes paramètres en output
Comme dans PL-SQL (Oracle)
Le problème est que je ne connais ni Oracle et ne Sybase mais uniquement Informix comme base de données (nul n'est parfais)
et l'appli que j'ai a modifier est une petite application sur laquelle il y a très peu de procédure stockée
Hors ligne
wazou1812 a écrit:
erasorz a écrit:
et la déclaration ?
Code: mssql
declare @id_delai_1 char(2);
Mais ce sont les variables que je veux retourner, et que j'ai mis dans la partie result
Hors ligne
Create Proc TEST ( @code integer output, @chaine char(100) output) As Begin select @code = [... ton script pour remplir la variable ...] select @chaine = [... ton script pour remplir la variable ...] END
Dernière modification par Nephtis (13-05-2009 15:51:04)
Hors ligne
Merci beaucoup pour vos conseils, la procédure fonctionne presque....................
Hors ligne
Pages: 1