你的位置:首页 > 软件开发 > 数据库 > 全面学习DBMS包之DBMS_SQL

全面学习DBMS包之DBMS_SQL

发布时间:2016-06-20 10:00:15
在PL/SQL编程当中,经常会遇到一些需要动态处理数据或表结构的问题,比如对一批表里的数据进行处理,或者批量创建表,索引,触发器等等,这个时候就可以通过DBMS_SQL包进行操作。你可能会有疑问,ORACLE不是提供了EXECUTE IMMEDIATE了嘛?干嘛还要DBMS_SQ ...
在PL/SQL编程当中,经常会遇到一些需要动态处理数据或表结构的问题,比如对一批表里的数据进行处理,或者批量创建表,索引,触发器等等,这个时候就可以通过DBMS_SQL包进行操作。你可能会有疑问,ORACLE不是提供了EXECUTE IMMEDIATE了嘛?干嘛还要DBMS_SQL包来处理?嘿嘿,不错,很多人都习惯用EXECUTE IMMEDIATE来动态处理此类需求。下面根据我的理解,解释一下二者的区别。SQL> create or replace procedure pro_test_dbms_sql(l_num in number,l_tabname in varchar2)过程已创建。SQL>  exec pro_test_dbms_sql(0,'test');PL/SQL 过程已成功完成。SQL> select table_name from user_tables where table_name='TEST';TABLE_NAMESQL> exec  pro_test_dbms_sql(1,'test');PL/SQL 过程已成功完成。SQL> select count(1) from user_tables where table_name='TEST';  COUNT(1)SQL> 全面学习DBMS包之DBMS_SQLSQL> create or replace procedure pro_test_dbms_sql(l_num in number,l_tabname in varchar2)过程已创建。SQL>  exec pro_test_dbms_sql(0,'test');PL/SQL 过程已成功完成。SQL> select table_name from user_tables where table_name='TEST';TABLE_NAMESQL> exec  pro_test_dbms_sql(1,'test');PL/SQL 过程已成功完成。SQL> select count(1) from user_tables where table_name='TEST';  COUNT(1)SQL> 在这个例子里,我要用动态语句去更新TEMP表LJJE字段,得到JE的累积和。当然直接在LOOP里去执行UPDATE也可以得到,这里是为了熟悉和说明DBMS_SQL包的使用拿来举例。        ID         JE       LJJESQL> update temp set ljje=null;已更新4行。SQL> select * from temp;        ID         JE       LJJESQL>  12  dbms_sql.parse(l_cur,l_sql,dbms_sql.native);过程已创建。SQL> exec pro_update_ljje;PL/SQL 过程已成功完成。SQL> select * from temp;        ID         JE       LJJESQL> 3、 DML之绑定变量SQL> create table test(表已创建。SQL> insert into test已创建4行。SQL> commit;提交完成。        ID COUNTRY    COMPANY                                            NAME       ADDRESS         2 china      sap lab                                            Myth       XujiahuiSQL> SQL> create or replace procedure pro_update_address(l_country varchar2,l_address varchar2)过程已创建。SQL> SQL> exec pro_update_address('china','Pudong Area');PL/SQL 过程已成功完成。SQL> select * from test;        ID COUNTRY    COMPANY                                            NAME       ADDRESS         2 china      sap lab                                            Myth       Pudong Are         3 china      sap lab                                            Lucy       Pudong Are         4 china      INXITE                                             Kate       Pudong Are        ID COUNTRY    COMPANY                                            NAME       ADDRESS小结:这里主要应用了几个常见的子过程,更多的子过程内容只是了解了下,详情请参考ORACLE安装目录下的DBMSSQL.SQL。

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:全面学习DBMS包之DBMS_SQL

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。