2012-10-15 44 views
5

Tôi có hàm plsql và tôi muốn gọi hàm khác từ hàm của mình. tôi có thể làm cái này như thế nào?cách gọi hàm trong hàm plsql

FUNCTION ortak_icra_job(prm_dosya_id    dosya.id%TYPE, 
        prm_aciklama    icra_hareket.aciklama%TYPE, 
        prm_kullanici_id   kullanici.id%TYPE, 
        prm_ask_ind_kayit_sayisi OUT NUMBER, 
        prm_hata_metni   OUT VARCHAR2, 
        prm_hata_kodu   OUT hata_mesaji.id%TYPE) 
BEGIN 

askidan_indir(prm_dosya_id , 
       prm_aciklama , 
       prm_kullanici_id , 
       prm_ask_ind_kayit_sayisi , 
       prm_hata_metni , 
       prm_hata_kodu) 

END; 

là cách này đúng không?

+0

'FUNCTION ortak_icra_job' của bạn thiếu một tuyên bố' RETURNS'. –

+0

Ngoài ra, bạn nên tránh các tham số OUT trong một hàm - mặc dù nó được cho phép bởi cú pháp, nó gần như luôn luôn tốt hơn để sử dụng một thủ tục cho loại điều này. –

Trả lời

4

Functions phải trả lại một giá trị, nếu không bạn nên có một mục tiêu chuyển nhượng cho hàm.

FUNCTION ortak_icra_job(prm_dosya_id    dosya.id%TYPE, 
        prm_aciklama    icra_hareket.aciklama%TYPE, 
        prm_kullanici_id   kullanici.id%TYPE, 
        prm_ask_ind_kayit_sayisi OUT NUMBER, 
        prm_hata_metni   OUT VARCHAR2, 
        prm_hata_kodu   OUT hata_mesaji.id%TYPE) 
    RETURNS VARCHAR2 IS 
v_result varchar2(200); 
BEGIN 

v_result := askidan_indir(prm_dosya_id , 
       prm_aciklama , 
       prm_kullanici_id , 
       prm_ask_ind_kayit_sayisi , 
       prm_hata_metni , 
       prm_hata_kodu); 
RETURN v_result; 
END; 
8

Here là ví dụ về cách chạy hàm. Có hai cách để làm điều đó.

  1. Cố gắng thêm giá trị kết quả:

    result := askidan_indir(prm_dosya_id, 
          prm_aciklama, 
          prm_kullanici_id, 
          prm_ask_ind_kayit_sayisi, 
          prm_hata_metni, 
          prm_hata_kodu) 
    
  2. Bạn cũng có thể sử dụng chức năng của bạn trong select statement:

    select askidan_indir(prm_dosya_id, 
           prm_aciklama, 
           prm_kullanici_id, 
           prm_ask_ind_kayit_sayisi, 
           prm_hata_metni, 
           prm_hata_kodu) 
    into result 
    from dual; 
    
+0

là nó bắt buộc rằng chúng ta cần phải có một LHS với một trường hợp RHS chúng tôi đang cố gắng gọi một chức năng khác ... –

+0

Có, bạn có quyền! (+1) – Parado