ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dbms_utility的两个有用方法

dbms_utility的两个有用方法

原创 Linux操作系统 作者:realkid4 时间:2011-03-13 22:37:19 0 删除 编辑

 

我们在编写PL/SQL代码的时候,经常遇到一些常用代码功能,比如进行字符串转化、获取当前CPU时间等等。这些代码如果自己编写,不但消耗时间而且效率和正确性也得不到保证。

 

作为一门成熟的开发语言,PL/SQL也提供了很多工具包和方法库。其中dbms_utility就是其中比较重要的一个。如同名称所示,其中包括了很多常用的工具方法,熟悉这些方法会大大帮助我们进行Oracle开发。这次我们简单介绍一下table_to_comma和comma_to_table两个对照方法。

 

方法功能签名介绍

 

我们经常要对字符串进行变化操作,比如把一个用逗号“,”分割的字符串拆分为数组。或者把字符数组组合为用逗号“,”分割的字符串。dbms_utility包提供的这两个方法就可以方便的实现该类型功能。

 

首先介绍一下两个方法的签名。

  //实现将数组转化为字符串

  PROCEDURE table_to_comma( tab    IN  lname_array,

                            tablen OUT BINARY_INTEGER,

list   OUT VARCHAR2);

  //实现将字符串转化为数组

  PROCEDURE comma_to_table( list   IN  VARCHAR2,

                            tablen OUT BINARY_INTEGER,

                            tab    OUT lname_array);

 

 

此处,使用了一个类型为lname_array的自定义类型,需要额外注意下。该类型使用的全名为dbms_utility.lname_array,定义为:

 

 

  type lname_array IS table of VARCHAR2(4000) index by BINARY_INTEGER;

  --  Lists of Long NAME should be stored here, it includes fully

  --  qualified attribute names.

 

 

lname_array为一个典型的字符串数组,用来保存处理的数组数据。lname_array是一个提升版本。在dbms_utility包中,还能够看到版本类型uncl_array,作为兼容版本。

 

代码示例

 

两个包方法是用的方法很简单,通过一个代码片段我们可以了解。

 

set serveroutput on size 10000;

 

declare  

   t_vararray dbms_utility.lname_array;

   vc_stringlist varchar2(4000);

   n_idx binary_integer;

begin

   --comma to table

   vc_stringlist := 'dkf,dddl,fewe,klkj';

  

   dbms_utility.comma_to_table(vc_stringlist,

                               n_idx,

                               t_vararray);

   dbms_output.put_line('Total Num : '||to_char(n_idx));

  

   for i in 1..n_idx loop

       dbms_output.put_line(t_vararray(i));      

       t_vararray(i) := '['||t_vararray(i)||']';

   end loop;

  

   --table to comma  

   dbms_utility.table_to_comma(t_vararray,

                               n_idx,

                               vc_stringlist);

   dbms_output.put_line('');

   dbms_output.put_line(''||vc_stringlist);                           

                              

end;

/

 

 

上述代码就实现了将字符串每个逗号字符用方括号进行封装的需要。运行结果为:

 

Total Num : 4

dkf

dddl

fewe

klkj

 

[dkf],[dddl],[fewe],[klkj]

 

PL/SQL procedure successfully completed

 

Executed in 0 seconds

 

 

 

了解一门语言是一个长期的过程,除了语句语法和语句特点,还要尽可能了解语言默认提供的一些方法包。利用好这些方法,可以大幅度提高我们的开发效率和质量。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-689316/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7677540