|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mai 2009 Messages : 26 ![]() |
Bonjour à tous,
Alors, j'ai deux problèmes dans la conception de ma procédure stockée sous oracle avec SQL Developer. Premier souci: En fait, ma procédure prend en paramètre le nom d'une table et une valeur d'un des champs de cette table. Je souhaite alors conserver dans une variable (booléenne) le résultat du select sur cette table avec comme condition la valeur du champ concerné. Pour celà j'utilise "EXECUTE IMMEDIATE" pour mon select et "decode" pour vérifier la valeur de retour du select. Mais EXECUTE IMMEDIATE ne prend pas en compte la variable "var_Found_table_attribut" Second souci: les cotes dans 'N' et 'Y' que j'utilise dans ma requête n'ont pas l'air d'etre apprécié par le codes. Voilà mon code: Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 274 ![]() |
1/ C'est une mauvaise idée d'utiliser row_id comme PK, row_id est interne à oracle et ne doit que très très rarement être utilisé.
Crée ta propre PK que tu incrémenteras via une séquence. 2/ Le SQL dynamique est dangereux pour des raisons d'injonction SQL Pour la table il faut valider que c'est bien une table existante (dbms_assert.sql_object_name) et pour les variables il faut les binder en utilisant USING. 3/ Pour débugguer du SQL dynamique il faut afficher la requête que l'on souhaite faire exécuter via DBMS_OUPUT. Dans ton code il manque FROM, des espaces et le INTO ne se place pas là. Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2009 Messages : 26 ![]() |
Oui, j'ai du oublié le FROM. mais ça ne répond pas forcément à ce que jee veux dans la mesure où ton (skuatamad) code ne prend pas en compte mes deux paramètres en entrée en l'occurence le nom de la table et la valeur d'un des champ. En outre j'aimerai savoir ce que me retoune le select raison pour laquelle j'ai utilisé le decode.
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 274 ![]() |
Voilà un exemple, il faut doubler les quotes pour les echapper.
Mais dans ton code le DECODE est inutil car la PK est forcément NOT NULL. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com