当前位置:  数据库>其它
本页文章导读:
    ▪Oracle的collection二维操作      Oracle collection 是PL SQL开发中会用到一个对象,它表示一组有序的元素组成,一个组中元素的类型必须保持一致。它分成3 类,分别为Associative arrays(也称index-by tables)、Nested tables 、Varrays。 第.........
    ▪DB2 DECODE 函数的用法      在查询数据,需要进行条件判断时,一般我们使用CASE...WHEN实现,当判断条件为相等时,除了使用CASE...WHEN实现,还可以使用DECODE函数。若要使用like、>、<等其他判断条件时,就只能使用CA.........
    ▪Windows下Postgres数据库自动备份      1、首先新建一个bat文件,用来执行数据库备份命令。 内容如下:(路径、IP、文件名等按需指定) @ECHO OFF @set DirName=%date:~0,7% @set FileName=%date:~0,10%_DB_NAME.backup @if %date:~8,2% == 01 (md E:\DBbackup\".........

[1]Oracle的collection二维操作
    来源: 互联网  发布时间: 2013-11-07
Oracle collection 是PL SQL开发中会用到一个对象,它表示一组有序的元素组成,一个组中元素的类型必须保持一致。它分成3 类,分别为Associative arrays(也称index-by tables)、Nested tables 、Varrays。
第一个Associative arrays,可看成数据字典,有key,value两列。key值可以是任意数字和字符串,value值可以是任意对象、甚至是collection类型的对象。
第二个Nested tables,可看着一维数组,使用数字编号可以依次操作每个数组元素。
第三个Varrays,可看着预先定义好长度的一维数组,使用数字编号可以依次操作每个数组元素。

这三类的定义和初始化的方法如下:
type typ_dict is table of varchar2(100) index by varchar2(10);  
type typ_array is table of integer;  
type typ_varray is varray(3) of varchar2(10);  
v_dict   typ_dict;  
v_array  typ_array := typ_array();  
v_varray typ_varray := typ_varray(null, null, null);  

这些类除掉普通的数据类型外,还有遇到object类型。这点和面向对象编程的语言有些相似,但功能没那么强大。
例如定义一个有多个VARCHAR2组成的对象。
CREATE OR REPLACE TYPE obj_food AS OBJECT (
     name VARCHAR2( 100 )
   , food_group VARCHAR2( 100 )
   , color VARCHAR2( 100 )
  );

CREATE TYPE typ_array_food IS table OF obj_food;

l_food      typ_array_food := typ_array_food();

示例一,
DECLARE
  l_food      typ_array_food := typ_array_food();
BEGIN
  l_food.extend(3);
  l_food(1) := obj_food('Scrambled Eggs', 'Protein', 'Yellow');
  l_food(2) := obj_food('Deluxe Salad', 'Vegetables', 'Mostly Green');
  l_food(3) := obj_food('Tofu and Rice', 'Protein', 'White');

  dbms_output.put_line('food(1)=' || l_food(1).name);
 
    for j in 1 .. l_food.count loop
      dbms_output.put_line('food('||j||')=' || l_food(j).name);        
    end loop;    

END;

结果如下:
SQL> set serveroutput on
SQL> /
 
food(1)=Scrambled Eggs
food(1)=Scrambled Eggs
food(2)=Deluxe Salad
food(3)=Tofu and Rice
 
PL/SQL procedure successfully completed


这个例子是一维数组的例子,如果我们要使用二维数组,又该如何定义?

前提是先在数据库中定义一个二维数组的类型
CREATE TYPE typ_array_foods IS table OF typ_array_food;
然后开发示例程序,如下:
DECLARE
  l_food      typ_array_food := typ_array_food();
  l_foods     typ_array_foods := typ_array_foods();
BEGIN
  l_food.extend(3);
  l_food(1) := obj_food('Scrambled Eggs', 'Protein', 'Yellow');
  l_food(2) := obj_food('Deluxe Salad', 'Vegetables', 'Mostly Green');
  l_food(3) := obj_food('Tofu and Rice', 'Protein', 'White');

  l_foods.extend(1);
  l_foods(1) := l_food;

  dbms_output.put_line('foods(1,1)=' || l_foods(1)(1).name);
 
  l_foods.extend(1);
  l_foods(2) := l_food;

  l_food.trim(l_food.count);
  for i in 1 .. 2 loop
    l_food.extend(1);
    l_food(i) := obj_food('Scrambled Eggs '||i, 'Protein', 'Yellow');
  end loop;

  l_foods.extend(1);
  l_foods(3) := l_food;

  for i in 1 .. l_foods.count loop
    for j in 1 .. l_foods(i).count loop
      dbms_output.put_line('foods('||i||','||j||')=' || l_foods(i)(j).name);        
    end loop;  
  end loop;

END;


通过collection的trim、extend等操作,我们很容易理解它。在现实开发中,多数情况下使用的类型是Nested tables。

作者:mikixiyou 发表于2013-2-27 10:18:00 原文链接
阅读:47 评论:0 查看评论

    
[2]DB2 DECODE 函数的用法
    来源: 互联网  发布时间: 2013-11-07

在查询数据,需要进行条件判断时,一般我们使用CASE...WHEN实现,当判断条件为相等时,除了使用CASE...WHEN实现,还可以使用DECODE函数。若要使用like、>、<等其他判断条件时,就只能使用CASE...WHEN实现了。下面就解释下DECODE()函数的用法。

DECODE()使用方法: 

decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)


DECODE()含义说明:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)

ELSE
    RETURN(缺省值)
END IF


附上DBCODE()官方说明

DECODE scalar function

                           .--------------------------------------.                              
                           V                                      |                              
>>-DECODE--(--expression1----,--expression2--,--result-expression-+--+--------------------+--)-><
                                                                     '-,--else-expression-'      

The schema is SYSIBM.

The DECODE function compares each expression2 to expression1. If expression1 is equal to expression2, or both expression1 andexpression2 are null, the value of the following result-expresssion is returned. If no expression2 matches expression1, the value ofelse-expression is returned; otherwise a null value is returned.

The DECODE function is similar to the CASE expression except for the handling of null values:
  • A null value of expression1 will match a corresponding null value of expression2.
  • If the NULL keyword is used as an argument in the DECODE function, it must be cast to an appropriate data type.
The rules for determining the result type of a DECODE expression are based on the corresponding CASE expression.

Examples:

The DECODE expression:
   DECODE (c1, 7, 'a', 6, 'b', 'c')
achieves the same result as the following CASE expression:
   CASE c1
     WHEN 7 THEN 'a'
     WHEN 6 THEN 'b'
     ELSE 'c'
   END
Similarly, the DECODE expression:
   DECODE (c1, var1, 'a', var2, 'b')
where the values of c1, var1, and var2 could be null values, achieves the same result as the following CASE expression:
   CASE
     WHEN c1 = var1 OR (c1 IS NULL AND var1 IS NULL) THEN 'a'
     WHEN c1 = var2 OR (c1 IS NULL AND var2 IS NULL) THEN 'b'
     ELSE NULL
   END
Consider also the following query:
   SELECT ID, DECODE(STATUS, 'A', 'Accepted',
                              
    
[3]Windows下Postgres数据库自动备份
    来源: 互联网  发布时间: 2013-11-07

1、首先新建一个bat文件,用来执行数据库备份命令。

内容如下:(路径、IP、文件名等按需指定)

@ECHO OFF 
@set DirName=%date:~0,7% 
@set FileName=%date:~0,10%_DB_NAME.backup 

@if %date:~8,2% == 01 (md E:\DBbackup\"%DirName%") 
@if not exist E:\DBbackup\"%DirName%" (md E:\DBbackup\"%DirName%") 

@if not exist %DirName% (md %DirName%) 
"D:\PostgreSQL\9.1\bin\pg_dump.exe" -i -h xxx.xxx.xxx.xxx -p 5432 -U postgres -Ft -f E:\DBbackup\%FileName% DB_NAME

@ECHO ON 

2、执行上边的bat时会要求输入数据库密码,为解决该问题,

需创建postgres密码文件“pgpass.conf”,

内容为“xxx.xxx.xxx.xxx:5432:DB_NAME:postgres:PASSWORD”

放在“D:\PostgreSQL\9.1\data”路径下,

并新建环境变量【PGPASSFILE】值为“D:\PostgreSQL\9.1\data\pgpass.conf”,这样运行时就不需要输入密码了。


3、最后把bat放到任务计划中,每天执行即可。

作者:qingchen191 发表于2013-2-27 10:11:23 原文链接
阅读:39 评论:0 查看评论

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3