2015-10-26 1 views
0

J'ai une fonction qui prend le nom_table en entrée et renvoie un nombre. La fonction est compilée correctement, mais pour une raison quelconque, lorsque j'essaie de tester la fonction, elle renvoie erreur - mot-clé manquant.Fonction avec Table_name en entrée et renvoie un nombre dans Oracle

CREATE OR replace FUNCTION TEST_FUNCTION (name_table IN VARCHAR2) RETURN NUMBER 

     IS   

      rday NUMBER;     
    BEGIN 

    execute immediate 
    'select day_i into rday 
       FROM ' || name_table || ' 
       WHERE day_i = 1 and rownum = 1'; 

    return rday; 

    END TEST_FUNCTION; 

Voici comment je le tester Select TEST_FUNCTION ('FDR_REP') from dual;

Répondre

2

La syntaxe pour exécuter immédiatement est différente pour une clause into essayer

CREATE OR replace FUNCTION TEST_FUNCTION (name_table IN VARCHAR2) RETURN NUMBER 

     IS   

      rday NUMBER;     
    BEGIN 
    execute immediate 'select day_i 
       FROM ' || name_table || ' 
       WHERE day_i = 1 and rownum = 1' into rday; 


    return rday; 

    END TEST_FUNCTION; 
+0

Merci @kevinsky il travaille maintenant !! – JavaQuest