用于存储过程中的动态SQL执行
例如:
有个查询表行数的存储过程,传入的参数是表名
这种情况,直接select count(*) from v_变量 是无法执行的
只能定义一个变量,然后拼接变量,再调用execute immediate执行
CREATE OR REPLACE PROCEDURE TEST(P_NAME IN VARCHAR,
P_OUT_EXITCODE OUT NUMBER)
BEGIN
P_OUT_EXITCODE := 0;
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || P_NAME;
END;
综上:
动态SQL,就是指需要执行的SQL语句,不是固定的,要等运行的时候,才能确定下来,就像上面的例子,表名是外部传入的