1、将字符串转换成SQL语句用 "IMMEDIATE"
eg:
EXECUTE IMMEDIATE "UPDATE TEST SET ID = 1";
2、WHENEVER SQLERROR
语法:
WHENEVER SQLERROR
{EXIT [SUCCESS|FAILURE|WARNING|n|variable|:BindVariable]
[COMMIT|ROLLBACK]|CONTINUE [COMMIT|ROLLBACK|NONE]}
作用:
当 sql、pl/sql 执行过程中出现错误,则执行一些操作。注:不包括 sql*plus 命令的错误。
出现错误时,可以执行两种操作 EXIT 和 CONTINUE,分别为退出 sql*plus 和 不退出。
[SUCCESS|FAILURE|WARNING|n|variable|:BindVariable] 的具体作用没有搞清楚,可能是以什么样的方式退出 sql*plus 吧,如 SUCCESS、FAILURE 或者用变量,比如 SQL.SQLCODE。
[COMMIT|ROLLBACK]:在退出 SQL*PLUS 前是提交事务还是回滚事务。
[COMMIT|ROLLBACK|NONE]:如果不退出,那么也可以指定提交事务还是回滚事务,或者什么也不做。
eg:
EXECUTE IMMEDIATE "UPDATE TEST SET ID = 1";
2、WHENEVER SQLERROR
语法:
WHENEVER SQLERROR
{EXIT [SUCCESS|FAILURE|WARNING|n|variable|:BindVariable]
[COMMIT|ROLLBACK]|CONTINUE [COMMIT|ROLLBACK|NONE]}
作用:
当 sql、pl/sql 执行过程中出现错误,则执行一些操作。注:不包括 sql*plus 命令的错误。
出现错误时,可以执行两种操作 EXIT 和 CONTINUE,分别为退出 sql*plus 和 不退出。
[SUCCESS|FAILURE|WARNING|n|variable|:BindVariable] 的具体作用没有搞清楚,可能是以什么样的方式退出 sql*plus 吧,如 SUCCESS、FAILURE 或者用变量,比如 SQL.SQLCODE。
[COMMIT|ROLLBACK]:在退出 SQL*PLUS 前是提交事务还是回滚事务。
[COMMIT|ROLLBACK|NONE]:如果不退出,那么也可以指定提交事务还是回滚事务,或者什么也不做。