更新Oracle存储过程以引入检查

更新Oracle存储过程以引入检查,oracle,if-statement,stored-procedures,plsql,Oracle,If Statement,Stored Procedures,Plsql,oracle中的以下存储过程存在问题,它将离开公司的员工标记为2099年开始工作 create or replace PROCEDURE "USP_DISABLELEFTEMPLOYEES" AS BEGIN UPDATE SHOP_EMPLOYEE SET DATE_STARTED = '01 JAN 2099', PROCESSED = 1 WHERE PROCESSED <> 1; COMMIT; END; 创建或替换过程“USP\u DIS

oracle中的以下存储过程存在问题,它将离开公司的员工标记为2099年开始工作

create or replace PROCEDURE             "USP_DISABLELEFTEMPLOYEES"
AS
BEGIN
UPDATE SHOP_EMPLOYEE
SET DATE_STARTED = '01 JAN 2099',
PROCESSED      = 1
WHERE PROCESSED <> 1;
COMMIT;
END;
创建或替换过程“USP\u DISABLELEFTEMPLOYEES”
作为
开始
更新店铺员工信息
设置开始日期='01 JAN 2099',
已处理=1
如已处理,则为1;
犯罪
结束;
长话短说,当sftp服务器发送的初始文件为空时,它将所有员工标记为离开公司。我不熟悉oracle和pl sql,所以我想在存储过程运行之前引入一个检查

数据首先被加载到SHOP_EMPLOYEE_IMPORT中,所以我想做的是检查这个表是否包含少于5000条存储过程无法运行的记录

create or replace PROCEDURE             "USP_DISABLELEFTEMPLOYEES"
AS
**SELECT @var = AbortJob FROM SHOP_EMPLOYEE_IMPORT where varname = @AbortJob
IF (@@ROWCOUNT > 5000)**
BEGIN
UPDATE SHOP_EMPLOYEE
SET DATE_STARTED = '01 JAN 2099',
PROCESSED      = 1
WHERE PROCESSED <> 1;
COMMIT;
END;
创建或替换过程“USP\u DISABLELEFTEMPLOYEES”
作为
**从车间\员工\导入中选择@var=AbortJob,其中varname=@AbortJob
如果(@@ROWCOUNT>5000)**
开始
更新店铺员工信息
设置开始日期='01 JAN 2099',
已处理=1
如已处理,则为1;
犯罪
结束;

然而,正如你想象的那样,这是行不通的。如果您在
PL/SQL
代码上使用
transact-SQL
语法,您能帮我实现这一点吗。那不行。如果需要添加该检查,请使用适当的
PL/SQL
语法进行添加

大概是这样的:

create or replace PROCEDURE "USP_DISABLELEFTEMPLOYEES"(p_AbortJob varchar2(200))
   cnt as number;
AS
    select count(1) into cnt
      FROM SHOP_EMPLOYEE_IMPORT where varname = p_AbortJob;
    IF cnt > 5000 then
    BEGIN
        UPDATE SHOP_EMPLOYEE
        SET DATE_STARTED = '01 JAN 2099',
            PROCESSED      = 1
        WHERE PROCESSED <> 1;
        COMMIT;
    END;
END;
创建或替换程序“USP_DISABLELEFTEMPLOYEES”(p_AbortJob varchar2(200))
cnt为数字;
作为
选择计数(1)到cnt
从SHOP_EMPLOYEE_IMPORT,其中varname=p_AbortJob;
如果cnt>5000,则
开始
更新店铺员工信息
设置开始日期='01 JAN 2099',
已处理=1
如已处理,则为1;
犯罪
结束;
结束;

另外,不要在您的过程中包含
commit
子句。

是的,这是我不熟悉PL-SQL的部分问题,我只是展示了一个我想做的示例。看起来不错,我会将它放在我们的测试环境中。谢谢,请注意,插入T-SQL是为了显示我想做什么的示例,我不知道如何或是否可以使用PL-SQL来实现这一点。