On 10 Mar 2005, at 11:55, Scott Lamb wrote:
- consistent dynamic sql (from what I see, there are different ways for altering the order and the where clauses..are there others?)
There's also the <s:bindlist/>, which is similar to your iterator.
Ahh, lost a later draft with more here.
There's no general-purpose lexical bind (like Oracle Forms & Reports' &foo). I also don't have a way of quoting SQL identifiers, as I haven't found the need. I sometimes execute queries like this:
declare
cursor grants is
select grantee, granted_role
from dba_role_privs
where granted_role in ('FOO', 'BAR');
begin
for grant in grants loop
execute immediate 'revoke ' || quote_identifier(grant.granted_role)
|| ' from ' || quote_identifier(grantee);
end loop;
end;
/
show errors
but those are infrequent admin tasks, and I'm happy just typing that block into SQL*Plus. I don't know why you'd do that from a web app.
This is another case where I try to avoid implementing the feature before I see what needs it. I waited on lexical binds and added instead bind lists, conditionals, and dynamic order by clauses when each presented its need. They've all been much better for the task than lexical binds would be, and there might be some more left of that nature.
-- Scott Lamb <http://www.slamb.org/>
PGP.sig
Description: This is a digitally signed message part