a1e*_*x07 2 oracle dynamic-sql
假设我有以下程序
CREATE PROCEDURE foo (table1_id IN TABLE1.table1_id%type,
table1_val IN TABLE1.table1_value%type)
AS
SQL_UPDATE VARCHAR2(500) := 'UPDATE TABLE1 SET table1_value =:1 WHERE table1_id = :2';
BEGIN
--.....
--1 :
EXECUTE IMMEDIATE SQL_UPDATE USING foo.table1_val, foo.table1_id;
--2 :
UPDATE TABLE1 SET table1_value = foo.table1_val WHERE table1_id = foo.table1_id;
END;
Run Code Online (Sandbox Code Playgroud)
除了样式/可读性之外,在这种情况下(我的意思是绝对可以避免的情况)使用动态查询 (1) 与 (2) 相比是否有任何性能损失?
谢谢你。
我可能这样做的唯一原因是,如果我需要处理一个在编译时可能不存在的对象——例如,如果我有代码来根据需要创建新的外部表。
顾名思义,PL/SQL编译时不会解析动态SQL语句,所以你不知道它是否正确,并且依赖项不会存储在数据库中。
归档时间: |
|
查看次数: |
4788 次 |
最近记录: |