Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有错误,则提交事务;如果Oracle SQL*plus中发生错误,则回滚_Sql_Oracle_Commit_Oracle Sqldeveloper - Fatal编程技术网

如果没有错误,则提交事务;如果Oracle SQL*plus中发生错误,则回滚

如果没有错误,则提交事务;如果Oracle SQL*plus中发生错误,则回滚,sql,oracle,commit,oracle-sqldeveloper,Sql,Oracle,Commit,Oracle Sqldeveloper,下面是我用来在数据库中部署SQL脚本的一小段代码。我只是想知道是否可以根据结果自动执行提交或回滚任务 disc connect username/password@database spool D:\Deployments\path\to\logfile\logfile.log @D:\Deployments\path\to\script\sqlquery_script.sql 如果sql脚本在没有任何错误的情况下成功运行,则意味着我希望系统自动提交它,如果发生任何错误,则应回滚所有事务(注意

下面是我用来在数据库中部署SQL脚本的一小段代码。我只是想知道是否可以根据结果自动执行提交或回滚任务

disc
connect username/password@database
spool D:\Deployments\path\to\logfile\logfile.log
@D:\Deployments\path\to\script\sqlquery_script.sql
如果sql脚本在没有任何错误的情况下成功运行,则意味着我希望系统自动提交它,如果发生任何错误,则应回滚所有事务(注意,我的sql脚本有许多update语句)

每当SQLERROR退出SQL.code ROLLBACK时使用
SQL*plus窗口关闭,不显示任何错误


请帮助解决此问题。

您没有说明您的脚本是什么。把它放在PL/SQL匿名块中怎么样

BEGIN
    ... updates here ...

    COMMIT; 
EXCEPTION WHEN OTHERS THEN
    ROLLBACK;
    RAISE; 
END;
/

你没说你的剧本是什么。把它放在PL/SQL匿名块中怎么样

BEGIN
    ... updates here ...

    COMMIT; 
EXCEPTION WHEN OTHERS THEN
    ROLLBACK;
    RAISE; 
END;
/

可能您可以调用过程,或者在Sql脚本中调用过程

exec procedureName(参数1,参数2)

将此语句保存在sql文件中

如有例外,请将本声明与上述声明一并保存

例外情况 当x_出错时,则

回滚

您可能可以调用过程,或者在Sql脚本中调用过程

exec procedureName(参数1,参数2)

将此语句保存在sql文件中

如有例外,请将本声明与上述声明一并保存

例外情况 当x_出错时,则

回滚

谢谢@eaolson。很好用!正如您所要求的,我的脚本将包含Update和Insert。例如,我可能在同一个脚本文件中有10-15个udpate查询和相同数量的insert查询。现在,我需要假脱机脚本每行的结果。是否可能?PL/SQL块中的DML不会导致显示“x行更新”类型的消息。相反,您可以创建自己的消息并使用dbms_output.put_line.Thank@eaolson。很好用!正如您所要求的,我的脚本将包含Update和Insert。例如,我可能在同一个脚本文件中有10-15个udpate查询和相同数量的insert查询。现在,我需要假脱机脚本每行的结果。是否可能?PL/SQL块中的DML不会导致显示“x行更新”类型的消息。相反,您可以创建自己的消息并使用dbms_output.put_行。