2012-10-15 59 views
5

Ho una funzione plsql e voglio chiamare un'altra funzione dalla mia funzione. come posso fare questo?come chiamare una funzione in funzione 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; 

è questo modo corretto di fare questo?

+0

vostro 'ortak_icra_job' FUNZIONE manca una dichiarazione' ritorni '. –

+0

Inoltre, dovresti evitare i parametri OUT in una funzione - sebbene sia consentita dalla sintassi, è quasi sempre meglio usare una procedura per questo genere di cose. –

risposta

4

Functions deve restituire un valore, altrimenti si dovrebbe avere un obiettivo di assegnazione alla funzione.

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 è un esempio di come eseguire la funzione. Ci sono due modi per farlo.

  1. tenta di aggiungere valore del risultato:

    result := askidan_indir(prm_dosya_id, 
          prm_aciklama, 
          prm_kullanici_id, 
          prm_ask_ind_kayit_sayisi, 
          prm_hata_metni, 
          prm_hata_kodu) 
    
  2. È anche possibile utilizzare la funzione in 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

è necessario che abbiamo bisogno di avere un LHS senza un RHS in caso stiamo cercando di chiamare un'altra funzione ... –

+0

Sì, avete ragione! (+1) – Parado

Problemi correlati