在我的 Oracle 存储过程中,我有多个插入和更新语句,如下所示:
create or replace PROCEDURE SPTest
AS
BEGIN
insert into emptest(empid,empname,deptno)
(1,'ravi',10);
insert into test1(id,name,sal)
(1,'raju',4444);
update emptest set empname='hari' where empid=1;
END;
Run Code Online (Sandbox Code Playgroud)
如果我在任何语句中遇到任何错误,我想回滚所有插入和更新语句。
如何在此存储过程中实现提交和回滚?
我在 MySQL 中有一个如下表:
+-----+------+-------+-----------+----------+---------+
| #id | NAME | empid | c_lan | Java_lan | Dot_lan |
+-----+------+-------+-----------+----------+---------+
| 1 | raju | 111 | yes | NULL | NULL |
| 1 | raju | 111 | NULL | NO | NULL |
| 1 | raju | 111 | NULL | NULL | na |
| 2 | ramu | 222 | yes | NULL | NULL |
| 2 | ramu | 222 | NULL | NO …
Run Code Online (Sandbox Code Playgroud) CREATE TABLE Table_1 (
Id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
EmailId VARCHAR
)
INSERT INTO Table_1 VALUES (1,'raj@gmail.com');
INSERT INTO Table_1 VALUES (3,'test@gmail.com');
INSERT INTO Table_1 VALUES (4,'false5@gmail.com');
INSERT INTO Table_1 VALUES (7,'false55@gmail.com');
INSERT INTO Table_1 VALUES (8,'falsefalse@gmail.com');
INSERT INTO Table_1 VALUES (9,'true1@gmail.com');
INSERT INTO Table_1 VALUES (11,'true2@gmail.com');
INSERT INTO Table_1 VALUES (12,'falsefalsefalse@gmail.com');
INSERT INTO Table_1 VALUES (13,'ravi@gmail.com');
INSERT INTO Table_1 VALUES (14,'rak@gmail.com');
INSERT INTO Table_1 VALUES (15,'false@gmail.com');
INSERT INTO Table_1 VALUES (16,'false66@gmail.com');
CREATE TABLE Table_2 (
Id …
Run Code Online (Sandbox Code Playgroud) 我想在 Oracle 调度程序作业中调用存储过程。我的程序和工作如下所示:
存储过程
create or replace PROCEDURE emp_test
IS
begin
delete from emp;
insert into emp(empid,empname)
select empid1,empname1 from emp_temp;
end;
Run Code Online (Sandbox Code Playgroud)
工作
BEGIN
dbms_scheduler.create_job (
job_name => 'emp_test_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
CALL emp_test();
END;',
start_date => SYSTIMESTAMP,
enabled => true,
repeat_interval => 'FREQ=DAILY');
END;
Run Code Online (Sandbox Code Playgroud)
我可以像CALL emp_test()
不使用工作一样调用过程。
当我在上面的作业中使用相同的东西时,作业已成功创建,但程序未运行,未插入行。我需要运行这个作业并且应该插入行;有人可以帮我吗?