Oracle 存储过程中 execute immediate 语句的解析

在 Oracle 数据库的数据血缘/数据沿袭分析过程中,我们会碰到 execute immediate SQL 语句。被 execute immediate 执行的语句通常以字符串的形式出现,例如:

BEGIN
execute immediate '
	INSERT INTO small_orders
	SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,
		o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem
	FROM orders o, customers c
	WHERE o.customer_id = c.customer_id;
	';
END

一个数据血缘/数据沿袭分析工具如果无法分析被 execute immediate 执行的语句,例如上例中的 insert 语句,那么一些关键的数据血缘关系将会被遗漏。Gudu SQLFlow 分析上面的 SQL 语句后,将给出下图的数据血缘/数据沿袭,保证了数据血缘关系的完整性。

Oracle 数据血缘分析中动态 SQL 语句的处理