更新Oracle存储过程来介绍一个检查
我们与Oracle中的以下存储过程中的问题,它标志着谁已经离开了公司在2099年更新Oracle存储过程来介绍一个检查
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;
但是,正如你可以形象这不会工作。你能帮我弄到这个工作吗,
你在PL/SQL
代码上使用TransactSQL
语法。这是行不通的。如果您需要添加该检查,请使用正确的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;
而且,不包括在你的程序中commit
条款。
是的,这就是问题的一部分,我不熟悉到PL-SQL,我只是带我想做什么做榜样。 – user3481395
看起来不错,患病把它在我们的测试环境。谢谢巴勃罗 – user3481395
请注意,T-SQL插入,以显示我想要做一个例子,不知道如何或是否可能与PL-SQL来做到这一点。 – user3481395