| Native Dynamic SQL
|
DBMS_SQL
|
| A freelance SQL within PL/SQL,
which are easy to access |
Comes as a package, offers an
interface to dynamic SQL |
| PL/SQL block has built in
support for Dynamic SQL therefore more efficient than DBMS_SQL. |
DBMS_SQL uses a Procedural API so
it is generally slower than Native Dynamic SQL. |
| Supports user defined types. |
Does not support user defined
types. |
| Does not support Data Type
specific to PL/SQL, Booleans, |
|
| Supports FETCH INTO record types |
Does not support FETCH INTO record
types |
| Since does not provide a "address
/pointer" client site code can't be blended |
Supported in client side code. |
| Does not support DESCRIBE_COLUMNS |
Supports DESCRIBE_COLUMNS |
| Does not support bulk Dynamic SQL,
but it can be faked by placing all statements in a PL/SQL block. |
Supports bulk Dynamic SQL. |
| Only supports Single row
Updates/Deletes with RETURNING clause. |
Supports Single and Multiple row
Updates/Deletes with RETURNING clause. |
| Does not support SQL statements
bigger than 32K |
Does support SQL statements bigger
than 32K |
| Parse required for every execution |
Parse once, execute many possible |