在存储过程中使用EXECUTE IMMEDIATE用于DML语句

时间:2011-07-24 05:53:16

标签: oracle plsql execute-immediate

我是PL SQL Procedures的新手,我们在存储过程的执行部分中有这行代码。

我在这里有一个查询,请告诉我在这里使用EXECUTE IMMEDIATE使用DML语句的用法是什么?在什么情况下我们应该使用EXECUTE IMMEDIATE

v_update_query2 := 'INSERT INTO '||p_country||'.DETAILS ( ID, STATUS, DEST_SYSTEM, OUT_TIME ) VALUES ('''
    ||v_txn_id ||''','||'''T081'''||','||'''CLEARING'''||', SYSDATE)';



EXECUTE IMMEDIATE v_update_query1 ;

1 个答案:

答案 0 :(得分:3)

EXECUTE IMMEDIATE是对模式对象进行变量引用的唯一方法 - 例如表名,列名等。

它允许您构建任何字符串,然后将该字符串作为SQL语句执行 没有它,过程变量只能用于sql中的值,例如select * from table where column = my_variable

在您的示例中,表名p_country变量提供 - 这是一个架构元素,因此您需要EXECUTE IMMEDIATE