如何在PLSQL过程中将绑定变量作为IN-OUT参数传递



我想使用过程的第一个参数EMP_ID作为IN OUT参数。最初它是IN参数,此过程运行良好,但作为最后一行涉及

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

我想在匿名块中使用这一行,最重要的是,它应该是一个绑定变量,因为我正在创建REST API,用户只在其中输入值,它将被视为oracleApex中的绑定变量,下面的过程对于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参数。在PLSQL块中,没有关于将绑定变量作为输入输出参数进行传递的适当文档。

假设您有一个名为PR_PROC的过程,您可以使用VARIABLE语句传递IN OUTOUT类型的变量。

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变量

最新更新