Как передать переменную привязки как параметр IN OUT в процедуре PL SQL - PullRequest
0 голосов
/ 11 июля 2020

Я хочу использовать 1-й параметр моей процедуры EMP_ID как параметр IN OUT . Первоначально это параметр IN , и эта процедура работает нормально, но, поскольку проблема последней строки

htp.p('Inserted for Employee-id '||EMP_ID);

, я хочу использовать эту строку в анонимном блоке и, что наиболее важно, это должна быть переменная привязки, потому что я создаю REST API , в котором пользователь будет вводить только значения, и она будет принята как переменная привязки в oracle Apex и нижеприведенная процедура работает нормально в отношении параметра IN .

create or replace procedure att_time_ins (EMP_ID in  varchar2, ORG_ID in number,V_TIME_STATUS in number) is
  BEGIN
INSERT INTO TIME_ATTENDANCE_POOL
(EMPLOYEE_ID, ATTENDANCE_DATE,TIME_HOURS,TIME_MINUTES,TIME_STATUS,LOCATION_ID,ORG_ID,PREPARED_ON )  
VALUES  
(EMP_ID, to_date(sysdate,'DD/MM/YYYY'),to_char(sysdate,'HH24') ,to_char(sysdate,'MI'),V_TIME_STATUS,null,ORG_ID,
to_date(sysdate,'DD/MM/YYYY') );   
COMMIT;

time_management.create_attendance_sheet(v_org_id => ORG_ID,
                                          v_employee_id => EMP_ID,
                                          target_date =>  to_date(sysdate,'DD/MM/YYYY'));
 htp.p('Inserted for Employee-id '||EMP_ID);



end att_time_ins;

Я вызываю свою процедуру таким образом

begin
 
  att_time_ins(:employee_id,:org_id,:time_status);
 
end;

Пожалуйста, помогите мне измените этот материал в соответствии с параметром IN OUT, т.е. Employee_id должен быть параметром IN OUT . Нет надлежащей документации относительно передачи переменных связывания, как в out prameter в PL SQL Block.

1 Ответ

1 голос
/ 11 июля 2020

Допустим, у вас есть процедура с именем PR_PROC, вы можете использовать оператор VARIABLE для передачи типов переменных IN OUT или OUT.

CREATE OR REPLACE PROCEDURE PR_PROC (EMP_NAME   IN     VARCHAR2,
                                     EMP_ID     IN OUT VARCHAR2)
IS
BEGIN
   DBMS_OUTPUT.PUT_LINE (EMP_NAME||EMP_ID);

END;
   
VARIABLE KURSOR VARCHAR2
BEGIN
 :KURSOR:='4';
 PR_PROC('SENIOR',:KURSOR);
END;

Примечание: если вы используете В редакторе TOAD вы можете нажать F5, чтобы он заработал.

Oracle VARIABLE

...