Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
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 29/11/2010, 18h44   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 110
Points : 12
Points : 12
Par défaut Envoi du nom d'un fichier comme paramètre

Bonsoir tt le monde,

J'ai déjà posé cette question il y longtemps.

Est ce-qu'on peut envoyer le nom d'une table comme paramètre à une procédure stockée.

Je m'explique :

Dans mon application j'ai 15 fichiers temporaires de même structure :
t0001,t0002,...,t0015
J'ai une ps définit comme suite:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SET TERM ^ ;
 
CREATE PROCEDURE UpdateFile (
    xfile CHAR(10)
    )
AS
définition de mes VARIABLES
begin
  INSERT INTO :xfile (....) VALUES (....);
end
^
SET TERM ; ^
A l'appel de la ps je met :

execute procedure ('T0001');
ou
execute procedure ('T0002');
ou
....
execute procedure ('T0015');

Est-ce que ça marche avec les nouvelles version de firebird.
NB. Je travail avec la version 2.0.0.12748
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 19h44   #2
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Bonsoir,

Utilisez un EXECUTE STATEMENT :
Code :
1
2
3
 
EXECUTE STATEMENT 'INSERT INTO ' || :xfile ||'(champ1,champ2) VALUES ('
||V1 ||','||V2||')';
V1,V2 = variable1, variable2
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h23   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 110
Points : 12
Points : 12
Merci,

Je vais essayez.
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h33   #4
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 110
Points : 12
Points : 12
ok ça marche

Merci
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h47   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 110
Points : 12
Points : 12
Bonjour tout le monde,

J'ai un problème lorsque j'utilise la boucle qui scane une table (for select .. do ...) :

Code :
1
2
3
4
5
6
7
8
9
    execute statement 
'for select dtmvt,datech,libelle1,libelle2,debit,credit from '  || :xfile || 
    'where code=:xCode and (dtmvt  between  :xDt1 and :xDt2)
         INTO  :xdtmvt,:xdatech,:xlibelle1,:xlibelle2,:xdebit,:xcredit
    do
    begin
        insert into P001 (dtmvt,datech,cdmvt,libelle1,libelle2,debit,credit)
        values (:xdtmvt,:xdatech,:xcdmvt,:xlibelle1,:xlibelle2,:xdebit,:xcredit);
    end'
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 13h06   #6
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Bonjour,

Essayez avec ca :
Code SQL :
1
2
3
4
5
6
7
8
9
 
FOR EXECUTE STATEMENT 'select dtmvt,datech,libelle1,libelle2,debit,credit from '  || :xfile || ' where code = ' || :xCode || ' and (dtmvt  between  ''' || :xDt1 || ''' and ''' || :xDt2 || ''')';
INTO  :xdtmvt,:xdatech,:xlibelle1,:xlibelle2,:xdebit,:xcredit
 
Do
Begin
INSERT INTO P001 (dtmvt,datech,cdmvt,libelle1,libelle2,debit,credit)
        VALUES (:xdtmvt ,:xdatech ,:xcdmvt ,:xlibelle1 ,:xlibelle2 ,:xdebit ,:xcredit);
End
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 11h53   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 110
Points : 12
Points : 12
Merci freud.

Je vais faire un essai
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h24.


 
 
 
 
Partenaires

Hébergement Web