Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Base de données
  •  » [RESOLU] Création d'une procédure stockée sur une base de données Sybase

#1 13-05-2009 12:36:53

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

[RESOLU] Création d'une procédure stockée sur une base de données Sybase

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 :

Code: mssql

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

 

#2 13-05-2009 13:21:25

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

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 ;

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 13-05-2009 13:32:28

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

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

 

#4 13-05-2009 13:58:22

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

et la déclaration ? 

Code: mssql

declare @id_delai_1 char(2);

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 13-05-2009 14:13:12

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

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

Code:

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

 

#6 13-05-2009 14:21:22

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

Il te faut déclarer tes paramètres en output
Comme dans PL-SQL (Oracle)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 13-05-2009 14:35:06

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

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

 

#8 13-05-2009 15:48:05

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

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


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 13-05-2009 15:50:17

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

Code: sql

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)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#10 14-05-2009 13:17:06

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Création d'une procédure stockée sur une base de données Sybase

Merci beaucoup pour vos conseils, la procédure fonctionne presque....................

Hors ligne

 
  • Index
  •  » Base de données
  •  » [RESOLU] Création d'une procédure stockée sur une base de données Sybase

Pied de page des forums

Propulsé par FluxBB 1.2.22