如何在plsql函数中调用函数

如何在plsql函数中调用函数,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个plsql函数,我想从我的函数调用另一个函数。我该怎么做 FUNCTION ortak_icra_job(prm_dosya_id dosya.id%TYPE, prm_aciklama icra_hareket.aciklama%TYPE, prm_kullanici_id kullanici.id%TYPE,

我有一个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;
这是正确的方法吗?

是如何运行函数的示例。有两种方法可以做到这一点

  • 尝试添加结果值:

    result := askidan_indir(prm_dosya_id,
               prm_aciklama,
               prm_kullanici_id,
               prm_ask_ind_kayit_sayisi,
               prm_hata_metni,
               prm_hata_kodu )
    
  • 您还可以在
    select语句中使用您的函数:

    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;
    
  • 必须返回一个值,否则应该为函数指定一个赋值目标

    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;
    

    如果我们试图调用另一个函数,我们需要一个LHS而不需要RHS……您的
    函数或Tak_icra_作业
    缺少一个
    返回
    声明。此外,您应该避免在函数中输出参数-尽管语法允许,对于这类事情,使用程序几乎总是更好的。