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 08/02/2011, 12h22   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Par défaut Création d'une vue à l'éxécution

Bonjour à tous ,
Je travaille avec Firebird 2.04 sous C++Builder XE Pro
Voci ma problèmatique : j'ai une table impoortante > 1 millions d'enregistrements et à un moment donné mon utilisateur a besoin d'effectuer des modifications sur une fraction de cette table (<<1% de la table ) ;J'envisage donc de travailler sur une vue qui une fois créée permettra je l'espère une amélioration du traitement : Je souhaite donc créer ma vue en fonction d'un (Code) Mon souci est que je n'arrive pas à passer mon paramètre à la requete chargée d'effectuer la création de ma vue comme si dans une requete SQL "CREATE" on ne pouvait passer de paramètres ; en revanche si je passe ces parametres en "figé" ma vue se crée ....
Voci mon code
Code c++ :
1
2
3
4
5
6
7
 
MaRequete->Active=false;
MaRequete->SQL->Clear();
marequete->SQL->Add("Create VIEW (code,champ1,champ2) as select code,champ1,champ2) from matable
where code = :code ");
MaRequete->ParamBynam("code")->Asinteger=805r;
MaRequete->ExecSQL();
j obtiens l'erreur
Citation:
ERREUR SQL generale invalid request BLR at offset 34 !!!!!!

!! maintenant si j'utilise le code suivant ma vue se crée
Code c++ :
1
2
marequete->SQL->Add("Create VIEW (code,champ1,champ2) as select code,champ1,champ2) from matable
where code = 805");

Je ne suis pas certain que ce soit un problème SQL mais bon J'ai lu quelque part que Philippe makowski conseillait de passer par une procédure stockée : le souci est que je ne retrouve pas ce post et surtout aimerais comprendre pourquoi ma requete ne fonctionne pas .
merci d'avance pour les réponses éventuelles
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 14h03   #2
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
Bonjour,

Non ce n'est pas possible de créer des vues "paramétrées".

Et donc il vous faudra travailler avec directement votre select oubien passer par une procédure stoquée oubien encore mettre votre paramètre dans une table temporaire (mais là il faut Fb>=2.1).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 14h32   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Parfait Barbibulle
Merci pour cette réponse express dont je redoutais la teneur ....
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 08h37   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
à l'évidence ici il faut travailler directement avec le select
Code :
1
2
SELECT code,champ1,champ2) FROM matable
WHERE code = :code
je ne comprend pas où peut il y avoir problème ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 12h18   #5
Membre éclairé
 
Avatar de TryExceptEnd
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 435
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 435
Points : 347
Points : 347
Citation:
Envoyé par Didier44 Voir le message
J'envisage donc de travailler sur une vue qui une fois créée permettra je l'espère une amélioration du traitement : Je souhaite donc créer ma vue en fonction d'un (Code) Mon souci est que je n'arrive pas à passer mon paramètre à la requete chargée d'effectuer la création de ma vue comme si dans une requete SQL "CREATE" on ne pouvait passer de paramètres ; en revanche si je passe ces parametres en "figé" ma vue se crée ....
Ne me dis pas que tu veux créer une vue a chaque changement de paramètres !?
C'est très intelligent comme méthode, au lieu d'utiliser une simple requête select filtrée avec un paramètre tu nous pond un truc que j'ai jamais vu déjà.
__________________
Si vous êtes libre, choisissez le Logiciel Libre.
TryExceptEnd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 09h18   #6
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 611
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 611
Points : 4 508
Points : 4 508
Citation:
Envoyé par makowski Voir le message
je ne comprend pas où peut il y avoir problème ?
moi je ne comprend pas le besoin de passer par une vue !?
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster 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 07h53.


 
 
 
 
Partenaires

Hébergement Web