Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 12/05/2008, 18h48   #1
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 448
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 448
Points : 251
Points : 251
Par défaut Déclaration au sein d'une requête

Bonjour à tous,

Est-il possible de déclarer des variables au sein d'une requête.


Exemple:

Code :
1
2
3
4
5
6
Declare
a Number :=10000
 
BEGIN
SELECT * FROM M_Table WHERE Mon_CA > a
END

Merci
casavba est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 18h55   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
oui.

Note : ta syntaxe est incorrect, il faut des ; et un into
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 19h53   #3
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 448
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 448
Points : 251
Points : 251
Pourrais -tu être plus explicite .

Code :
1
2
3
4
5
6
Declare
a Number :=10000;
 
BEGIN
SELECT * FROM M_Table WHERE Mon_CA > a
END;
si je fais comme ça ne marche pas ???
casavba est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 20h18   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par casavba Voir le message
Pourrais -tu être plus explicite .
Code :
1
2
3
4
5
6
Declare
a Number :=10000;
 
BEGIN
SELECT * FROM M_Table WHERE Mon_CA > a ;
END;
si je fais comme ça ne marche pas ???
Ben essaie !

Code :
1
2
ORA-06550: line 2, COLUMN 1:
PLS-00428: an INTO clause IS expected IN this SELECT statement
Puis va voir : http://sheikyerbouti.developpez.com/...=Chap1#L1.2.20

Il y a un cours sur le pl/sql icitte : http://sheikyerbouti.developpez.com/pl_sql/
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 10h01   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Sous SQL*Plus tu peut utiliser le & pour désigner une variable :

Code :
SELECT * FROM M_Table WHERE Mon_CA > &a
ou alors déclarer une variable (toujours sous SQL*Plus) et la préfixer de : pour l'utiliser :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> var a number;
SQL> begin
  2  :a := 1000;
  3  end;
  4  /
 
PL/SQL procedure successfully completed.
 
SQL> SELECT :a FROM dual;
 
        :A
----------
      1000
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 17h36   #6
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 448
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 448
Points : 251
Points : 251
Bonjour et merci pour vos réponses,

En fait, j'ai pas accès à sql plus,
en fait je fais mes requêtes à l'aide d'une interface qui ressemble à mS query,

en fait au niveau de ma requete je voudrais déclarer la variable au début de la requête et l'initialiser en lui attribuant une valeur, ---> comme ça je serais pas obligé de modifié autant de fois que la valeur existe dans ma requête.

ex:


Code :
1
2
3
4
5
SELECT Filiale FROM Table_1 WHERE CA > 1000
union
SELECT Filiale FROM Table_3 WHERE CA > 1000
union
SELECT Filiale FROM Table_4 WHERE CA > 1000
ce que je voudrais faire c celà

Code :
1
2
3
4
5
6
7
8
9
Declare
a Number :=1000;
Begin
SELECT Filiale FROM Table_1 WHERE CA > a
union
SELECT Filiale FROM Table_3 WHERE CA > a
union
SELECT Filiale FROM Table_4 WHERE CA > a;
End;
J'ai beau essayé mais ça ne marche pas

Peut être que ma démarche est fausse

Help me

Je suis coincé
casavba est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 19h13   #7
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par casavba Voir le message
Code :
1
2
3
4
5
6
7
8
9
Declare
a Number :=1000;
Begin
SELECT Filiale FROM Table_1 WHERE CA > a
union
SELECT Filiale FROM Table_3 WHERE CA > a
union
SELECT Filiale FROM Table_4 WHERE CA > a;
End;
J'ai beau essayé mais ça ne marche pas
Peut être que ma démarche est fausse
Help me
Je suis coincé
Déjà, ça serait bien de nous donner une erreur au lieu du "ça marche pas".
Et puis tu peux toujours relire mon précédent message pour comprendre ton erreur de PL/SQL...
Mais ne te sens pas obliger.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 23h14   #8
Membre confirmé
 
Avatar de casavba
 
Inscription : juillet 2007
Messages : 448
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 448
Points : 251
Points : 251
En fait, l'erreur qui m'affiche est:

Citation:
Erreur dans la requête 'Select ..'
merci de ta compréhension Jérôme
casavba est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 09h33   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
manque INTO
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 17h21   #10
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par orafrance Voir le message
manque INTO
Ca va être sympa de l'ajouter dans la requête de type Select ... UNION SELECT...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 17h43   #11
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par mnitu Voir le message
Ca va être sympa de l'ajouter dans la requête de type Select ... UNION SELECT...
Ouais c'est vrai... Donc une solution : curseur
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 20h24   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
ou :
Code :
1
2
3
4
5
6
7
8
9
 
SELECT Filiale 
INTO mavariable
FROM (
SELECT Filiale FROM Table_1 WHERE CA > a
union
SELECT Filiale FROM Table_3 WHERE CA > a
union
SELECT Filiale FROM Table_4 WHERE CA > a);
A part ça quand je vois 3 tables avec les mêmes colonne et même condition WHERE je crains le pire
orafrance 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 16h32.


 
 
 
 
Partenaires

Hébergement Web