【发布时间】:2017-05-08 14:02:27
【问题描述】:
我们在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;
长话短说,它将我们所有的员工都标记为离开公司,因为从 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;
但是,您可以想象这是行不通的。你能帮我搞定这个工作吗,
【问题讨论】:
-
请注意插入 T-SQL 以显示我想要做的示例,不知道如何或是否可以使用 PL-SQL 做到这一点。
标签: oracle if-statement stored-procedures plsql