PlSql comment tester si une procédure est wappée ?
Bonjour,
J'utilise le wrappeur d'Oracle pour crypter mon PlSql.
Aujourd'hui je cherche à déterminer par programmation si un package est wrappé ou non.
Je n'ai pas trouvé dans le dictionnaire Oracle de champ indiquant si un code est wrappé ou pas.
Est-ce que quelqu'un sait s'il en existe un ?
Dans le cas contraire une idée sur comment je pourrais procéder siouplé ?
Par exemple en 10.2.0.3 standard edition.
Pozzo
Examiner le début du code source dans user_source
Bon. Une solution bien bricole-bricole comme on les aime.
Considérant que le code source commence toujours par
Type Body XXXX wrapped
On peut examiner le code de la pemière ligne et détecter si on a WRAPPED au bon endroit.
Exemple de réalisation :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Function est_crypte
(
ps_type In Varchar2, -- Type du code PlSql à examiner (PACKAGE BODY, TYPE BODY)
ps_nom In Varchar2 -- Nom du code PlSql à examiner
) Return Boolean Is
-- Declare
ls_chaine Varchar2(7);
-- Lecture du source
Cursor c_source(pcs_type In Varchar2, pcs_nom In Varchar2) Is
Select upper(substr(text,
length(Type) + 3 + length(Name),
7))
From user_source
Where Type = pcs_type
And Name = pcs_nom
And line = 1;
Begin
Open c_source(upper(ps_type),
upper(ps_nom));
Fetch c_source
Into ls_chaine;
Close c_source;
--
Return ls_chaine = 'WRAPPED';
Exception
When Others Then
If c_source%Isopen Then
Close c_source;
End If;
--
Raise;
End est_crypte; |
Si quelqu'un a plus propre je suis preneur...
Pozzo