用 EXECUTE IMMEDIATE 子句
如果 SQL 语句是完整的,那么直接用 EXECUTE IMMEDIATE 执行即可。按照如下方式传入或者传出参数,并且需要使用占位符:
如果动态 SQL 为 SELECT 语句,而且最多返回一行记录,那么可以通过 INTO 子句指定输出参数,USING 子句指定输入参数。
如果动态 SQL 是带有 RETURNING INTO 的 DML 子句,那么用 USING 子句指定输入参数,RETURNING INTO 指定输出参数。
如下示例为利用动态 SQL,把 ID 号为 111 的员工,名字改成 Roger,并同步员工的电话:
这里利用 USING 子句传入了 3 个参数,两个输入的参数,一个输出参数。
OPEN FOR,FETCH,CLOSE 子句
如果动态 SQL 语句表示返回多行的 SELECT 语句,则可以使用本机动态 SQL 对其进行如下处理:
使用 OPEN FOR 语句将游标变量与动态 SQL 语句关联。 在 OPEN FOR 语句的 USING 子句中,为动态 SQL 语句中的每个占位符指定一个绑定变量。
使用 CLOSE 语句关闭游标变量。
如下示例为在所有员工信息中检索经理级别的员工,并一次检索了行结果。