[sql dynamique] Erreur avec EXECUTE IMMEDIATE
Bonjour, je suis en train de creer une fonction en sql dynamique, donc voici pour le moment le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| create or replace function est_un_ngraphe (t2 varchar2)
return varchar2
is
mot2 varchar2 (4);
tmp2 varchar2(6);
req varchar2(512);
tmp3 pls_integer;
begin
mot2 := '''kw''';
req := 'select code into tmp2 from ' || t2 || ' where symbole = ' || mot2 ;
EXECUTE IMMEDIATE req into tmp3 ;
return req;
EXCEPTION
when no_data_found then return 0;
END est_un_ngraphe; |
et il me retourne l'erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Erreur commençant à la ligne 533 de la commande :
begin
dbms_output.put_line (est_un_ngraphe('haousa'));
end;
Rapport d'erreur :
ORA-00905: mot-clé absent
ORA-06512: à "L3_8.EST_UN_NGRAPHE", ligne 11
ORA-06512: à ligne 2
00905. 00000 - "missing keyword"
*Cause:
*Action: |
Comme je débute en sql dynamique je n'ai aucune idée du mot clé manquant.
Si quelqu'un a une idée, je suis preneur.
Merci d'avance.
Foublanc1.
édit : Bon, bah j'ai fini par trouver. Si quelqu'un venait à avoir le même problème et à lire ce post, sachez qu'il suffit de sortir le "into tmp" de la chaîne de caractères et de le mettre après le execute immediate.