Обновление: Ошибка функции: PLS-00306: неверный номер или типы аргументов при вызове get_bus_result_attribute. - PullRequest
0 голосов
/ 19 февраля 2019

Я просто думаю о проблеме и изменяю функциональную логику.Затем ошибка, как упоминалось в функции (get_result_attribute) - PLS-00306: неверный номер или типы аргументов при вызове get_result_attribute.Могу ли я знать проблему функции "get_result_attribute" в какой части?

Кодирование для системы автобусной станции.

FUNCTION get_bus_result_attribute (iv_result_name varchar2,
                                  iv_result_key varchar2,
                                  iv_result_attribute varchar2) 
  --define the parameter to get the "sql_result" script result
    RETURN varchar2 IS


     sql_result varchar2(500);
     sql_return varchar2(500);

 BEGIN

    sql_result := 'SELECT ' || iv_result_attribute || '
                    FROM MyTable a,
                    MyTable b
           WHERE  a.bus_value_set_id = b.bus_value_set_id
             AND b.bus_value_set_name = iv_result_name
             AND a.enabled_flag = ''Y''
                 AND a.bus_value = iv_result_key
                 AND iv_result_name = get_bus_code (v_bus)
                 AND iv_result_key = get_bus_name(v_group)
                 AND iv_result_key = iv_result_attribute';

                  EXECUTE IMMEDIATE sql_result 
                   INTO sql_return; --get the "sql_result" script result 

        return sql_return;
        exception
         when others then
           return '';
         end get_bus_result_attribute;

     FUNCTION get_bus_code (v_bus varchar2)           
       RETURN VARCHAR2 IS

         v_get_bus_code_result VARCHAR2(20)  ;

      BEGIN

          SELECT  busa.bus_code

     INTO v_get_bus_code_result

      FROM tbl_bus_code busa, tbl_bus_line busb
         WHERE  busa.bus_code_set_id = busb.bus_code_set_id
           AND busb.bus_line_set_name = 'HK_BUS_CODE'
           AND busa.enabled_flag = 'Y'
           AND (busa.attribute4 = 'Y' OR busa.attribute5 = 'Y')

           AND busa.BUS_VALUE = v_bus;

     RETURN v_get_bus_code_result;

     RETURN get_result_attribute('BUS_LINES', v_bus, 'attribute1'); /*BUS_GP*/

  EXCEPTION

     WHEN OTHERS THEN

      RETURN '';    
     END get_bus_code;     

FUNCTION get_bus_name(v_group VARCHAR2) --define the parameter and enter the value in the function 'get_bus_result_attribute'
  RETURN VARCHAR2 IS

  v_get_bus_div_result VARCHAR2(20)  ;    

   BEGIN

         SELECT DISTINCT CASE busa.bus_code  --Bus code
                    WHEN '52'    THEN '52X'   
                    WHEN '58P'    THEN '58'
                    WHEN 'K1'  THEN 'K1C'
                    WHEN '40'    THEN '40X'
                    WHEN '6'    THEN '6X'
                    WHEN '7'    THEN '7'
                    WHEN '58M'    THEN '58'

              ELSE ''
          END bus_code   --Bus code           

      INTO v_get_bus_div_result

     FROM tbl_bus_code busa, tbl_bus_line busb

     WHERE busa.bus_code_set_id = busb.bus_code_set_id
        AND busb.bus_line_set_name = 'HK_BUS_LINES'
       AND busa.enabled_flag = 'Y'
       AND (busa.attribute4 = 'Y' OR busa.attribute5 = 'Y')
       AND busa.bus_code NOT IN ('INACTIVE', 'XXX')
       AND get_bus_code(busa.BUS_VALUE) = v_group

      RETURN get_result_attribute('BUS_GROUP', v_group, 'attribute2');
                                                        --bus_group_dir 

     EXCEPTION
  WHEN OTHERS THEN
     RETURN '';
    END get_bus_name;  


FUNCTION BUS_DOC_TEXT (N_ID NUMBER, N_HEAD_ID NUMBER) 
  RETURN VARCHAR2 IS

   v_bus_doc_text VARCHAR2(150); 

   BEGIN

SELECT 'BUS\' 
      || get_bus_result_attribute(abc.attribute14) 
      || '\' 
      || abc.attribute14 
      || '\' 
      || abc.segment1

    INTO v_bus_doc_text

     FROM my_table_c abc

        WHERE abc.ORG_ID = N_ID          -- parameter
          AND abc.bus_id = N_HEADER_ID;      -- parameter

  END;


  RETURN v_bus_doc_text ;

   END;

  END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...