• 用 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 语句关闭游标变量。

    如下示例为在所有员工信息中检索经理级别的员工,并一次检索了行结果。