[PL/SQL Oracle] If qui s'appuie sur un select ?

If qui s'appuie sur un select ? [PL/SQL Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 04-02-2009 à 10:45:06    

Hello,
 
j'ai besoin dans un script PL/SQL d'exécuter un INSERT uniquement si une code (lu par un select) se termine par une valeur donnée.
 
je tente un truc genre  

IF (select truc from lala group by truc like '%27') THEN
    INSERT
....
 
END IF


 
mais c'est l'échec à la compilation de la procédure à cause du select qui semble interdit :/
C'est impossible de faire ça ?
 
Merci :jap:


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 04-02-2009 à 10:45:06   

Reply

Marsh Posté le 04-02-2009 à 10:59:39    

tu mets le résultat du select dans une variable, et tu testes cette variable...non? [:petrus dei]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-02-2009 à 11:02:34    

Avec les versions du PL/SQL que je connais, il faut mettre le résultat d'un select dans une ou plusieurs variables. De plus, comme il est possible que la requête renvoie plusieurs enregistrements, il faut utiliser un cursor.
Bon courage !

Reply

Marsh Posté le 04-02-2009 à 11:46:50    

olivthill a écrit :

Avec les versions du PL/SQL que je connais, il faut mettre le résultat d'un select dans une ou plusieurs variables. De plus, comme il est possible que la requête renvoie plusieurs enregistrements, il faut utiliser un cursor.
Bon courage !


 
pour contourner le truc:
tu testes si ca te retourne 0/!0
 

Code :
  1. select count(*) into ta_variable
  2. from lala
  3. where truc like '%27'

Reply

Marsh Posté le 04-02-2009 à 12:16:38    

Alors ya une seule valeur.
Le pb c'est que quand j'affecte avec:
 

create or replace package body plop as  
PROCEDURE proc IS
v_temp NUMBER := select truc from table group by truc;
BEGIN
 
...
 
 
IF v_temp like '%10' THEN
 
...
 
 
END IF


 
c'est pareil :(  
J'ai une erreur "encountered the symbol select" :(
Ya une seule valeur avec le group by :jap:


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 04-02-2009 à 12:17:19    

casimimir a écrit :

 

pour contourner le truc:
tu testes si ca te retourne 0/!0

 
Code :
  1. select count(*) into ta_variable
  2. from lala
  3. where truc like '%27'



select into ça marche pas que pour les tables en destination ?

Message cité 2 fois
Message édité par Piksou le 04-02-2009 à 12:17:28

---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 04-02-2009 à 12:22:17    

Piksou a écrit :


select into ça marche pas que pour les tables en destination ?


cursor.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-02-2009 à 13:56:14    

Piksou a écrit :


select into ça marche pas que pour les tables en destination ?


 
si tu dois traiter quelque chose qui te retourne l'équivalent de plusieurs ligne que tu as besoin de traiter différement alors effectivement un curseur, si tu as juste besoin de savoir si ca te retourne une valeur ou pas un into marche bien.
 
table en destination no comprende

Reply

Marsh Posté le 04-02-2009 à 14:17:24    

c'était une valeur
j'avais cru piger que les select into n'admettaient que des tables après le into, non des variables.
 
je m'en suis sorti avec une variable, merci :)


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Marsh Posté le 04-02-2009 à 14:28:11    

ne pas confondre un insert into qui est du sql avec un select ... into qui est du pl/sql

Reply

Marsh Posté le 04-02-2009 à 14:28:11   

Reply

Marsh Posté le 04-02-2009 à 14:32:46    

:jap:
Mais j'avais jamais vu de insert into avant aujourd'hui (je suis un codeur en carton et en plus je connais très mal PL/SQL ;) )

 

Merci encore :jap:


Message édité par Piksou le 04-02-2009 à 14:32:52

---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed