oracle - 在存储过程中使用 EXECUTE IMMEDIATE 执行 DML 语句

标签 oracle plsql execute-immediate

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

我在这里有一个查询,请告诉我在这里使用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 ;

最佳答案

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

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

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

关于oracle - 在存储过程中使用 EXECUTE IMMEDIATE 执行 DML 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805179/

相关文章:

sql - Oracle SQL : Pivot a column

sql - 查找丢失的序列号

oracle - 将过程中的值传递给 Select 语句

oracle - 什么情况导致Oracle软件包无效?

plsql - EXECUTE IMMEDIATE 插入多行列

Oracle EXECUTE IMMEDIATE 更改解释查询计划

.net - 如何使用 C# 将文件上传到 Oracle Bare Metal Cloud 对象存储

sql - Oracle:EXISTS 如何限制行数?

sql - 如何重新键入表中的层次结构?