Невозможно вызвать процедуру в Oracle APEX - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь вызвать процедуру в oracle вершине, но я столкнулся с проблемой при отображении вывода процедуры при передаче параметра как emp_id этой процедуре из oracle вершины. Может ли кто-нибудь мне помочь?

  1. процедура, которую я написал в SQL инструменте разработчика.

    create or replace PROCEDURE TEST_PROC(EMP_ID1 IN Number)
    As
    
    RESULT TIMESHEET_EMPLOYEES%ROWTYPE;
    
    BEGIN
    
    SELECT * INTO RESULT.EMP_ID,RESULT.NAME,RESULT.LOCATION,RESULT.CITY,RESULT.COUNTRY,RESULT.EMPLOYMENT_TYPE,RESULT.EMAIL_ID,RESULT.PHONE_NUMBER,RESULT.CREATED_BY,RESULT.CREATED_ON,RESULT.UPDATED_ON,
    
          RESULT.UPDATED_BY,RESULT.DATE_OF_JOINING,RESULT.ROLE_ID,RESULT.SUPERVISOR_ID FROM TIMESHEET_EMPLOYEES
    
          WHERE EMP_ID=EMP_ID1;
    
    
    
          DBMS_OUTPUT.PUT_LINE('EMP_ID:'||RESULT.EMP_ID||' '||'NAME:'||RESULT.NAME||' '||'LOCATION:'||RESULT.LOCATION||' '||'CITY:'||RESULT.CITY ||' '||'COUNTRY:'||RESULT.COUNTRY||' '||'EMPLOYMENT_TYPE:'||
    
          RESULT.EMPLOYMENT_TYPE||' '||'EMAIL_ID:'||RESULT.EMAIL_ID||' '||'PHONE_NUMBER:'||RESULT.PHONE_NUMBER||' '||'CREATED_BY:'||RESULT.CREATED_BY||' '||'CREATED_ON:'||RESULT.CREATED_ON||' '||'UPDATED_ON:'||
    
          RESULT.UPDATED_ON||' '||'UPDATED_BY:'||RESULT.UPDATED_BY||' '||'DATE_OF_JOINING:'||RESULT.DATE_OF_JOINING||' '||'ROLE_ID:'||RESULT.ROLE_ID||' '||'SUPERVISOR_ID:'||RESULT.SUPERVISOR_ID);
    
    EXCEPTION
    
    WHEN OTHERS THEN
    
    DBMS_OUTPUT.PUT_LINE('SQLCODE'||' '||SQLCODE);
    
    DBMS_OUTPUT.PUT_LINE('SQLERRM'||' '||SQLERRM);
    
    END;
    
  2. здесь oracle вершина в коде PL SQL Я пытаюсь вызвать эту процедуру, но не вижу никаких выходных данных.

    BEGIN
       TEST_PROC(:P1_EMPID); 
    END;
    

Может ли кто-нибудь помочь мне, так как я новичок в APEX ???

1 Ответ

0 голосов
/ 25 мая 2020

Apex не может отображать результат DBMS_OUTPUT.PUT_LINE.

Два простых варианта, которые вы можете использовать:

  • добавить еще один, OUT параметр (ы) в вашу текущую процедуру или
  • преобразовать эту процедуру в функцию который возвращает результат как объединенную строку

Оба они должны возвращать результат в элемент на странице.

Для Например, если бы это была процедура:

create or replace PROCEDURE TEST_PROC(EMP_ID1 IN Number,
                                      par_result out varchar2
                                     )
is 
  -- ... your current code goes here; I presume it does what you wanted

  -- at the end, return the result as
  par_result := 'EMP_ID:'||RESULT.EMP_ID||' '||'NAME:'||RESULT.NAME || ... 
end;

Назовите ее в процессе как

TEST_PROC(:P1_EMPID, :P1_RESULT); 

В соответствии с кодом, который вы написали: если вы объявили result как %rowtype, проще вставить прямо в него, а не в каждый отдельный кусок его. Например:

  select *
  into result                    --> this
  from timesheet_employees
  where emp_id = emp_id1;
...