问题描述
嗨!
我来到了这个新的工作场所,我试图弄清楚它们是如何工作的。我发现了很多反复调用的过程和软件包,我想知道这种事情是否以及如何影响oracle的性能。
特别是,我在一个函数中遇到了这个字符串:
LsGlobal是另一个包,c_LF是规范中的常量: = chr(10),c_APICE另一个常量: = '''' 和v_CFisc是一个in参数。
Oracle每次遇到一个package.variable时,都会进行调用,这是真的吗?如果是真的,这个字符串是一个不好的编码例子?
有没有办法跟踪oracle如何在什么时间解析这个字符串?
非常感谢你的帮助,
盖亚
我来到了这个新的工作场所,我试图弄清楚它们是如何工作的。我发现了很多反复调用的过程和软件包,我想知道这种事情是否以及如何影响oracle的性能。
特别是,我在一个函数中遇到了这个字符串:
v_SqlText := 'SELECT SIANAGR.ANACODANA '||LsGlobal.c_LF|| ' FROM SIANAGR '||LsGlobal.c_LF|| ' WHERE SIANAGR.ANAPIVA = '||LsGlobal.c_APICE||v_CFisc||LsGlobal.c_APICE||LsGlobal.c_LF;
LsGlobal是另一个包,c_LF是规范中的常量: = chr(10),c_APICE另一个常量: = '''' 和v_CFisc是一个in参数。
Oracle每次遇到一个package.variable时,都会进行调用,这是真的吗?如果是真的,这个字符串是一个不好的编码例子?
有没有办法跟踪oracle如何在什么时间解析这个字符串?
非常感谢你的帮助,
盖亚
专家解答
this string is a bad coding example?
这是一个horrendous编码示例。但是出于完全不同的原因。
安全。
这个代码是at risk of SQL injection。
真的这个代码应该是:
如果有什么原因absolutely must use dynamic SQL, you should validate the inputs with dbms_assert。
But really, the priority should be switching this to static SQL, like I've shown above。
修复此问题后,如果您担心特定PL/SQL语句的性能,则可以使用探查器来找出它们需要多长时间:
https://oracle-base。com/articles/11g/plsql-hierarchical-profiler-11gr1
这是一个horrendous编码示例。但是出于完全不同的原因。
安全。
这个代码是at risk of SQL injection。
真的这个代码应该是:
SELECT SIANAGR。ANACODANA INTO 。。。 FROM SIANAGR WHERE SIANAGR。ANAPIVA = v_CFisc ;
如果有什么原因absolutely must use dynamic SQL, you should validate the inputs with dbms_assert。
But really, the priority should be switching this to static SQL, like I've shown above。
修复此问题后,如果您担心特定PL/SQL语句的性能,则可以使用探查器来找出它们需要多长时间:
https://oracle-base。com/articles/11g/plsql-hierarchical-profiler-11gr1
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




