| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Dynamic sql
fitzjarrell_at_cox.net schrieb:
> dev..._at_gmail.com wrote:
> > Why in sql server environment I ever heard BAD of dynamic sql and in
> > Oracle I'm reading instead that it is cool?
> >
> > Only because of the bind variables way to secure from sql injection?
>
> I wonder where you read dynamic sql generation is 'cool' in Oracle; it
> isn't any better for performance in Oracle than it was for SQL Server.
In some (rare) cases it is. Consider bind variable peeking with skewed data.
> Dynamic SQL is still hard parsed every time it is executed, even if the
> same statement is executed multiple times,
Dynamic SQL is only hard parsed once if the same statement is executed multiple times.
SQL> DECLARE
2 SqlStatement VARCHAR2(500);
3 Dummy NUMBER;
4 BEGIN
5 FOR csRec IN (SELECT name, value
6 FROM v$sysstat
7 WHERE NAME IN('parse count (total)', 'parse
count (hard)')) LOOP
8 DBMS_OUTPUT.put_line(csRec.name || ': ' || csRec.value);
9 END LOOP;
10 SqlStatement := 'select count(*) from user_objects where
object_id = :oid ';
11 FOR i IN 1 .. 100 LOOP
12 EXECUTE IMMEDIATE SqlStatement
13 INTO Dummy
14 USING i;
15 END LOOP;
16 FOR csRec IN (SELECT name, value
17 FROM v$sysstat
18 WHERE NAME IN('parse count (total)', 'parse
count (hard)')) LOOP
19 DBMS_OUTPUT.put_line(csRec.name || ': ' || csRec.value);
20 END LOOP;
parse count (total): 136265 parse count (hard): 10242 parse count (total): 136367 parse count (hard): 10243
With dbms_sql (i.e. non-native dynamiv SQL) you can even avoid soft parsing mutliple times.
> and even if it uses some
> form of bind variable.
What is that: 'some form of bind variable' ? Is it just a 'bind variable' ?
...
> Post this link where dynamic sql is considered 'cool' in Oracle. I'd
> like to see who stated such a fallacy.
So would I.
Urs Metzger Received on Tue Aug 29 2006 - 10:31:04 CDT
![]() |
![]() |