Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/03/2005, 15h57   #1
Membre à l'essai
 
Inscription : mars 2004
Messages : 33
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 33
Points : 23
Points : 23
Par défaut [PS][FireBird] Paramètre par défaut ds une procédure stockée

:
Comment passer un paramètre dont sa valeur est par défaut dans une procédure stockée sous FireBird ou Interbase? :


j'ai déjà essayé avec Sql Server, et ça fonctionne correctement par exemple la procédure stockée suivante est avec paramètre par défaut @increment int = 1 dont le code est:
Code :
1
2
3
4
5
6
7
 
CREATE PROCEDURE dbo.GetNextID ( @entite varchar(30),  @compteur int output, @increment int = 1) AS
begin
SELECT @compteur = cpt FROM sequenceur WHERE entite = @entite
SET @compteur=@compteur +@increment 
UPDATE sequenceur SET cpt=@compteur WHERE entite=@entite
end

mais lorsque j'ai le réecri sous firebird ou interbase comme suit :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
ALTER PROCEDURE GETNEXTID (
    INCREMENT INTEGER = 1,
    ENTITE VARCHAR(30))
RETURNS (
    CPT INTEGER)
AS
begin
    SELECT compteur FROM sequenceur WHERE entite = :entite INTO :cpt;
    cpt = cpt + increment;
    UPDATE sequenceur SET compteur=:cpt WHERE entite=:entite;
    suspend;
end

un message d'erreur dans le syntaxe sql au niveau de la ligne suivante :
:
je veux ajouter un paramètre avec une valeur par défaut dans interbase ou firebird. Que Puis je faire ? :
moucrack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2005, 23h16   #2
Futur Membre du Club
 
Inscription : mai 2004
Messages : 17
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : mai 2004
Messages : 17
Points : 18
Points : 18
On ne peut pas mettre de valeur par défaut à un paramètre de procédure stockée dans Interbase / FireBird.

Ce que tu peut faire c'est passer une valeure nulle dans le paramètre et le tester dans le corps de la procèdure.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ALTER PROCEDURE GETNEXTID ( 
    INCREMENT INTEGER , 
    ENTITE VARCHAR(30)) 
RETURNS ( 
    CPT INTEGER) 
AS 
begin 
    IF (Increment IS NULL) then
      begin 
        Increment = 1;
      end
 
    SELECT compteur FROM sequenceur WHERE entite = :entite INTO :cpt; 
    cpt = cpt + :increment; 
    UPDATE sequenceur SET compteur=:cpt WHERE entite=:entite; 
    suspend; 
end
DarkWinter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2005, 17h09   #3
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
C'est en effet pas possible pour le moment.

La solution proposé est presque équivallente à un détail près.
Sous IB/FB INCREMENT sera toujours demandé (obligatoire) lors de l'appel. Alors que sous SQLServer, ces types de paramètres sont en fin et peuvent êtres omis. (Ce qui à mon avis n'est pas une bonne chose...)
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h59.


 
 
 
 
Partenaires

Hébergement Web