动态sql的使用
【程序编程相关:关于Servlet】 【推荐阅读:TeX中显示中英文表名/图题】oracle实际上比sql server好一些,但绝对没有传说中那么强.这是这些天一识oracle庐山真面目的感受.看来好多事情多如此,听的要比见到的完美.接着第一句说,oracle的动态sql就很棒,我专门学习了一下.记录如下. 【扩展信息:对C++片断的回顾】 先说说动态sql是什么,看这句熟悉的: select * from a_table where a_variable=a_declarevalue; 再写句动态的: select * from a_table where a_variable=:a_dynamicvalue; 两句的区别很明显,后者多一个占位符,这个以冒号开始的变量可以灵活地执行不同条件的where语句. 这是动态sql语句的优势,接下来的功能就是它的独门功夫了--执行ddl,dcl语句. 动态sql的执行 1 execute immediate语句 execute immediate dynamic_string [into {define_variable[,define_variable]…| record}] [using [in | out | in out] bind_argument[,[in | out \ in out] bind_argumnet]…] [{returning | return} into bing_argument[,bind_argument]…]; 下面是它的使用 处理ddl操作(create,alter,drop) create or replace procedure drop_table(table_name varchar2) is sql_statemet varchar2(100); begin sql_statement:=’drop table’ || table_name; execute immediate sql_statement; end; / 建立过程drop_table后,调用如下: sql> exec drop_table(‘worker’) 处理dcl操作(grant revoke) sql> conn system/manager... 下一页