Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

dbms_sqldiag_internal.i_create_patch - PLS-00306

hello

Il y a peu, nous vous avons proposé un article  (cliquez ici )sur l'injection de hint dans du sql via dbms_sqldiag_internal.i_create_patch.
Lorsque j'ai commencé mon article, j'ai été confronté à un petit soucis. Cependant je l'avais utilisé i y a quelques mois (mais certainement pas sur une 12c), et j'avais repris également été me documenter sur quelques très bon blogs.
Et donc naturellement ne voulant pas faire dans l'originalité, j'avais repris cette syntaxe qui avait déjà fonctionné pour moi et que je retrouvais un peu partout dans différents articles.

SQL>

SQL> begin

   dbms_sqldiag_internal.i_create_patch(sql_id=>'select * from lamidba', hint_text=>'PARALLEL(@"SEL$1" "LAMIDBA"@"SEL$1" 2)',creator=>'SYS', name=>'SQL_Patch_1');

end;

/


Et la.... Paf !

ERROR at line 2:

ORA-06550: line 2, column 4:

PLS-00306: wrong number or types of arguments in call to 'I_CREATE_PATCH'

ORA-06550: line 2, column 4:

PL/SQL: Statement ignored



SQL>


forcement, j'ai commencé par me dire qu' à force de lire une ligne sur deux, et ne suis pas le seul (N'est ce pas Monsieur Mickael ;)) j'avais du raté quelque chose... Après plusieurs tests infructueux... je me dis (comme souvent) que j'aurai du commencé par aller jeter un oeil sur Oracle Support !
Bien m'en a pris puisque je suis tombé sur la note  1931944.1
D'ou la syntaxe utilisée dans l'article précédent.

SQL>

SQL>  variable x varchar2(100);

 exec :x:=dbms_sqldiag_internal.i_create_patch(sql_text=>'select * from lamidba', hint_text=>'PARALLEL(@"SEL$1" "LAMIDBA"@"SEL$1" 2)',creator=>'SYS', name=>'SQL_Patch_1');

 SQL>

PL/SQL procedure successfully completed.

SQL>


Et pourtant sur de nombreux blogs, je continue de voir l'ancienne syntaxe alors qu'il est question de version 12c..
Pour mon article, j'utilisais une 12c R2... y a t'il eu un changement entre les deux versions.. à l'occasion je ferai le test sur une 12c R1 et posterai le résultat en commentaire.
Autre possibilité... je suis passé à coté de quelques chose... N'hesitez pas à me le faire savoir.

Enjoy.

 

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article