Comment puis-je supprimer le corps d'une fonction ou d'une procédure lorsque vous utilisez sqlplus pour vous connecter à une base de données Oracle?Vider le corps d'une fonction ou d'une procédure dans sqlplus
Répondre
select
text
from
user_source
where
type = 'PROCEDURE'
and
name='YOURPROCEDURENAME'
order by
line;
Utilisation:
SELECT us.name,
us.type,
us.text
FROM USER_SOURCE us
WHERE us.type IN ('PROCEDURE', 'FUNCTION')
ORDER BY name, line
Une autre solution consiste à utiliser la DBMS_METADATA api
set line 200
set long 10000
select dbms_metadata.ddl('PACKAGE','Package Name') from dual;
Vous pouvez l'utiliser pour toutes les métadonnées y compris tables, les index et les contraintes
Upvoting parce que ceux 'set line/set long' seront aussi nécessaires pour les autres mécanismes je pense. – monojohnny
@monojohnny, 'set long' n'est pas nécessaire pour * les autres mécanismes *. Encore +1, comme dbms_metadata * est * le chemin à parcourir, à mon humble avis. –
De même, tapez = 'FUNCTION' et name = 'YOURFUNCTIONNAME'. – dacracot
Nous avons plusieurs schémas différents mis en place. Dois-je faire quelque chose de spécial pour y faire face? –
Vous pouvez soit vous connecter au schéma spécifique, et user_source ne contiendra que la source de ce schéma. Ou vous pouvez vous connecter en tant que DBA et la table dba_source aura également une colonne propriétaire que vous pouvez inclure dans votre clause where pour spécifier le schéma qui vous intéresse. – dacracot