2010-06-09 11 views
5

İçinde bir imleç olduğu gibi bir bildirimi olan bir anonim pl/sql bloğum var. İmleci işlemden önce bildirirseniz başarısız olur. İşlemlerden önce imleçlerin bildirilmesi şartı var mı?Anonim bir pl/sql bloğundaki bildirim sırası

Bir pl/sql bloğunda bildirim sırası için başka hangi kurallar vardır?

Bu çalışır:

DECLARE 
cursor cur is select 1 from dual; 
procedure foo as begin null; end foo; 
BEGIN 
null; 
END; 

Bu PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: begin function package pragma procedure form

DECLARE 
procedure foo as begin null; end foo; 
cursor cur is select 1 from dual; 
BEGIN 
null; 
END; 

cevap

12

imleçler, değişkenler, sabitler ve çeşitleri paketleri/fonksiyonları önce ilan edilmesi gereken hata ile başarısız olur.

Bu seferki çok başarısız olur:

DECLARE 
procedure foo as begin null; end foo; 
x VARCHAR2(10); 
BEGIN 
null; 
END; 
+2

dokümantasyon referanstır burada http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/block.htm#i32791 Çok açık değil, ama "öğe bildirimleri" (örneğin değişkenler) listede 1 ve "prosedür/fonksiyon tanımları" ndan önce gelmek zorunda ich, 2. listede. –

+0

@Gary: Mükemmel, teşekkürler! –

0

siz de alt prosedüre kullanılabilir bir imleç bildirmek istiyorsanız, sadece eklemek başka anonim blok:

DECLARE 
cursor cur is select 1 from dual; 
BEGIN 
DECLARE 
    procedure foo as begin null; end foo; 
BEGIN 
    null; 
END; 
END;