2015-09-24 20 views
6

C# veya Java gibi bazı programlama araçları, prosedürleri/işlevleri kullanımdan kaldırılmış olarak işaretleyebilir. Ancak, Oracle PLSQL'in bunun için hiçbir işlevselliği yoktur. Bu özelliği desteklemenin başka bir yolu olduğunu merak ediyorum.Mark PLSQL prosedürü/işlevi kullanımdan kaldırıldı

"Herhangi bir PL/SQL kodunun derlenmesiyle ilgili PL/SQL derleyici uyarıları" gibi gösterilmesini istiyorum.

96/43 PLW-06005: inlining of call of procedure 'TEST' was done 
+2

Ya C# veya Java ile. Bir PL/SQL alt yordamı onaylanmayan olarak işaretlendiğinde ne olmasını bekler misiniz? – user272735

+0

Bu oracle forum dizisiyle karşılaştınız mı? https://community.oracle.com/thread/2342126 – ozy

+0

@ user272735 soruya daha fazla ayrıntı ekledi. –

cevap

4

12.2, bunun için yeni bir pragma var bırakın: deprecated_thing herhangi PL/SQL kimliğidir

pragma deprecate (deprecated_thing, 'Message to other developers'); 

....Aşağıdaki şeyler kaldırılmış olabilir:

  • Alt programlar
  • Paketleri
  • Değişkenler
  • Sabitler
  • Türleri
  • Subtipler
  • İstisnalar
  • Cursors
Örneğin 63.210

: Eğer PLW-6022 için PLW-6019 aralığında bir PL/SQL uyarı alacaksınız kaldırılmış modlin kullanan bir şeyi derlemeye çalışırken

CREATE OR REPLACE PACKAGE old_package AS 
PRAGMA DEPRECATE(old_package , ’Package old_package has been deprecated in favor of new_package’); 
    PROCEDURE p1; 
    PROCEDURE p2; 
END old_package; 

herkes.

alter session set plsql_warnings = 'error:6020'; 
: Alternatif

alter session set plsql_warnings = 'enable:(6019,6020,6021,6022)'; 

Eğer hata olarak bu uyarıları tedavi etmek için oturumu ayarlayabilirsiniz, şu şekildedir: Eğer kod derlemeye çalıştığınızda onları göreceği şekilde

Sen, bu uyarıları etkinleştirebilirsiniz

Veya, bir hata almak için kendisini kullanan herkes yapmak için nesneyi ayarlayabilirsiniz: Ben tanıdık n değilim

alter package <package with deprecated stuff> compile plsql_warnings = 'error:6020' reuse settings; 
-1
dbms_output.put_line('This function is deprecated'); 
+0

dbms_output, kod derleniyorken çalıştırılmıyor –

+0

Neden olmasın? :) – clq

+0

dbms_output.put_line Sadece yöntem uygulandığında "görünür". Soru, "compile_ olan herhangi bir PL/SQL kodu hakkında _compiler uyarısı" dır. –

1

Bu değil Oracle ve PL/SQL dilinin desteklenen fonksiyonu. Kodun amortismana tabi olup olmadığını belirlemek için yürütme başlangıcındaki değişkenleri kontrol edecek bir tür çerçeve geliştirmelisiniz, ancak bunların hepsi geliştirme ekibi tarafından elle ele alınmak zorunda kalacaktı. Bu, henüz Oracle tarafından dahil edilmemiş bir özellik değildir.

1

PL/SQL Source Code Control inside the database – After Compile trigger for automatic archiving tabanlı bir özel çözümümüz var.

  • tetik derlenmiş nesne hakkında bilgi (anahtar kelimeler yorumlarda ) toplayan şöyle

    Whenever we compile – create or replace – a PL/SQL object, the CREATE DDL event is fired and we can intercept that event with our own trigger. At that point we have various pieces of information that we can use to insert a new record into the PLSQL_ARCHIVE table.

    genel süreçtir. Bu anahtar kelimelerden biri, başlık yönteminde deprecated'dır (varsayılan: false).

  • Ardından tetikleyici, kullanılan yöntemleri analiz eder ve kullanımdan kaldırılmış olup olmadığını kontrol eder. yöntemi kullanılmazsa, warning_table numaralı telefondan saklanır.
  • Uyarıyı (zor kısım) görüntülemek için USER_ERRORS görüntüümüzü warning_table ile birleştirerek yeniden yazıyoruz. Nesne derlenmiş

Şimdi yararlı bir mesajım var:

OPLW-00001: The method SomeDeprecatedMethod is deprecated

Not: Bir iç gelişme Maalesef, ben kaynak kodunu paylaşamaz. Oracle

İlgili konular