2012-10-15 21 views
5

Mam funkcję plsql i chcę wywołać inną funkcję z mojej funkcji. jak mogę to zrobić?jak wywołać funkcję w funkcji 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; 

czy to jest właściwy sposób na zrobienie tego?

+0

W Twojej "FUNCTION ortak_icra_job" brakuje deklaracji "RETURNS". –

+0

Należy również unikać parametrów OUT w funkcji - chociaż jest to dozwolone przez składnię, prawie zawsze lepiej jest użyć procedury dla tego typu rzeczy. –

Odpowiedz

4

Functions musi zwrócić wartość, jeszcze trzeba mieć cel przypisania do funkcji.

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 to przykład jak uruchomić funkcję. Można to zrobić na dwa sposoby.

  1. Spróbuj dodać wartość wynikową:

    result := askidan_indir(prm_dosya_id, 
          prm_aciklama, 
          prm_kullanici_id, 
          prm_ask_ind_kayit_sayisi, 
          prm_hata_metni, 
          prm_hata_kodu) 
    
  2. Można również użyć funkcji w 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

jest mandatem, że musimy mieć LHS bez przysięgi RHS, którą próbujemy wywołać inną funkcję ... –

+0

Tak, masz rację! (+1) – Parado

Powiązane problemy