`
luogen33
  • 浏览: 82655 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DB2 数组

 
阅读更多
CREATE TYPE IDList AS INTEGER ARRAY[1000];
CREATE TYPE Projects AS VARCHAR(100) ARRAY[50];
CREATE TYPE Resumes AS XML ARRAY[];


分享到:
评论
7 楼 luogen33 2012-05-05  
data_studio.zip
6 楼 luogen33 2012-05-03  
http://lindows.iteye.com/blog/216559
5 楼 luogen33 2012-05-03  
#!/bin/sh
# published time : 2004/07/23 18:00

# Define the username and password used for logging in to the Oracle.
ACCOUNT=mmsc
PASSWORD=mmsc
SID=oracle9

# System path
APPHOME=`dirname $0`
if [ $APPHOME = "." ]; then
   APPHOME=`pwd`
fi
cd $APPHOME

# Execute the import operation
cat createdb.sql|sqlplus $ACCOUNT/$PASSWORD@$SID
4 楼 luogen33 2012-05-02  
#2楼 得分:0回复于:2008-10-28 13:36:33--这是sql server的字符串分解函数
SQL code/*
功能:实现split功能的函数
*/

create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as

begin
declare @i int

set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)

while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end

if @inputstr <> '\'
insert @temp values(@inputstr)

return
end
go

--调用

declare @s varchar(1000)

set @s='1,2,3,4,5,6,7,8,55'

select * from dbo.fn_split(@s,',')

drop function dbo.fn_split

3 楼 luogen33 2012-05-02  
Example 2

这个例子,我们使用2个数组类型(intArray 和 stringArray),使用一个包含列(id 和 name)的 persons 表。 存储过程 processPersons 添加3个人到 persons表, 并返回person名字的数组,按id排序,名字中包含字母 'o'。 3个persons 的 id 和 name 作为数组元素(ids 和 names)添加到数组中。这些数组使用UNNEST 函数,将数组数据以包含2列数据的表的表达形式表达,并插入到persons 表中。最后使用ARRAY_AGG函数将数据汇集返回给输出参数。

create type intArray as integer array[100] @

create type stringArray as varchar(10) array[100] @


create table persons (id integer, name varchar(10)) @

insert into persons values(2, 'Tom') @

insert into persons values(4, 'Jill') @

insert into persons values(1, 'Joe') @

insert into persons values(3, 'Mary') @


create procedure processPersons(out witho stringArray)

begin

declare ids intArray;

declare names stringArray;

set ids = ARRAY[5,6,7];

set names = ARRAY['Bob', 'Ann', 'Sue'];

insert into persons(id, name) (select T.i, T.n from UNNEST(ids, names) as T(i, n));

set witho = (select array_agg(name order by id)

from persons

where name like '%o%');

end @

1
2 楼 luogen33 2012-05-02  
Example 1

这个例子包含2个存储过程, sum 和 main. 存储过程 main 建立一个含有6个元素(integer)的数组。传递这个数组给存储过程sum, 计算出所有元素值的和并返回给调用存储过程 main. 存储过程 sum 说明了array subindexing 和CARDINALITY 函数的用法.

create type intArray as integer array[100] @


create procedure sum(in numList intArray, out total integer)

begin

declare i, n integer;

set n = CARDINALITY(numList);

set i = 1;

set total = 0;

while (i < n) do

set total = total + numList[i];

set i = i + 1;

end while;

end @


create procedure main(out total integer)

begin

declare numList intArray;

set numList = ARRAY[1,2,3,4,5,6];

call sum(numList, total);

end @

1 楼 luogen33 2012-05-02  
清单 9. 数组应用典范




//Create a table "bonus_temp" to store employee ID and corresponding bonus.
CREATE TABLE bonus_temp (empno varchar(6), bonus double)
//Create ARRAY types to store the values for employee ID, bonus and projects.
CREATE TYPE projects AS VARCHAR(20) ARRAY[10]
//Create the ARRAY type "employee"
CREATE TYPE employees AS VARCHAR(6) ARRAY[20]
//Create the ARRAY type "bonus"
CREATE TYPE bonus AS DOUBLE ARRAY[20]

//Create a stored procedure to calculate the bonus
CREATE PROCEDURE bonus_calculate (IN projs projects, IN percentage integer)
BEGIN
DECLARE emp_array employees;
DECLARE bonus_array bonus;

-- Select the IDs and corresponding bonus in corresponding ARRAY type
-- "employees" and "bonus" using aggregate function
-- ARRAY_AGG.
SELECT cast(array_agg(employee.empno) AS employees),
       cast(array_agg(.10*salary) AS bonus) INTO emp_array,bonus_array 
  FROM vempprojact, unnest(projs) AS P(id), employee
  WHERE P.id=vempprojact.projno AND employee.empno=vempprojact.empno;

-- Use UNNEST function to  the ARRAY elements  ARRAY
-- variables and  the same in "bonus_temp" table.
INSERT INTO bonus_temp
   SELECT T.empno, T.bonus
     FROM unnest(emp_array, bonus_array)
     WITH ORDINALITY AS T(empno,bonus, idx);
END

--Call the stored procedure to calculate the bonus.Input to this stored procedure is the
--ARRAY of all projects which are applicable for bonus

Call bonus_calculate(ARRAY[""AD3111"", ""IF1000"", ""MA2111""], 10)

--Select the data  the table "bonus_temp"

相关推荐

    Oracle 11g Pro*C/C++ 编程艺术中文版

    本书不仅介绍了各种类型Pro*C/C++应用的开发方法,而且还介绍了Oracle 11g在Pro*C/C++方面所提供的各种新特征,包括使用大纲固定执行计划、DB2数组插入和数组提取、隐含缓冲区插入、动态SQL语句缓存等。通过学习本书...

    C++编程艺术清晰版, 开发数据库应用

    本书不仅介绍了各种类型Pro*C/C++应用的开发方法,而且还介绍了Oracle 11g在Pro*C/C++方面所提供的各种新特征,包括使用大纲固定执行计划、DB2数组插入和数组提取、隐含缓冲区插入、动态SQL语句缓存等。 通过学习...

    DB2存储过程官方教程

    在 DB2 存储过程中,还支持一些操作数组的方法,例如函数 CARDINALITY(myarray) 返回一个数组中元素的个数。 DB2 存储过程官方教程涵盖了基本变量定义、基本语法描述、数组数据类型等内容,适合初学者学习和实践 ...

    DB2存储过程-基础教程

    DB2提供了一些操作数组的方法,例如CARDINALITY函数可以返回数组中元素的数量。 在DB2存储过程中为变量赋值,可以使用SET语句,这允许将一个值、表达式或NULL赋给本地变量、全局变量或数组元素。SET语句的简化语法...

    DB2存储过程

    从 DB2 version 9.5 开始,DB2 支持数组类型的变量和参数。数组类型的变量可以在存储过程和应用程序中操纵,但不能将其存储到表中。数组类型的声明语法如清单 2 所示: 清单 2. 创建数组数据类型的语法 ```sql ...

    db2字符串分隔,函数,过程的使用

    例如,`TOKENIZE('apple,banana,orange', ',')`会返回一个包含三个元素的数组:'apple', 'banana', 'orange'。 2. 字符串函数: - `SUBSTRING()`:从字符串中提取子串,如`SUBSTRING('Hello', 2, 3)`将返回'ell'。...

    db2存储过程基础

    自DB2 9.5版本起,支持数组类型的变量和参数。创建数组数据类型需要先定义一个类型,然后在存储过程或应用程序中声明。例如,`CREATE TYPE numbers AS INTEGER ARRAY[100]`。数组元素可以通过索引来访问,如`ARRAY-...

    db2 存储过程

    DB2允许我们定义数组类型,并且可以在存储过程中使用这些数组。定义数组类型的语法如下: ```sql CREATE TYPE array_type_name AS data_type ARRAY[size]; ``` 其中: - `array_type_name`:数组类型的名称。 - `...

    db2 cli 函数说明大全(最新版)

    - 输入:语句句柄、操作类型、操作计数、操作数组、操作数组的最大长度、实际使用的操作数组长度的指针。 - 输出:无。 - **应用场景**:当需要对多条记录进行批量操作时使用。 ##### 12. SQLCancel函数 - **作用...

    nodejs访问db2的包方便用户快速构建数据库操作的处理

    标题所提及的"nodejs访问db2的包"主要是指`ibm-db`或`db2-connect`等开源库,这些库为Node.js开发者提供了简洁的API,使得与DB2的连接、查询、插入、更新和删除等操作变得简单易行。下面将分步骤解析这个过程: 1. ...

    DM与DB2功能对比及差异性分析报告以及数据库系统移植方案.pdf

    DM的存储过程有其特定的特点,比如能够使用数组作为参数和返回值。触发器机制允许数据库管理员通过编程方式自动响应数据库事件,而包管理则提供了代码组织和重用的机制。这些特性使得DM在处理复杂业务逻辑和提高开发...

    Oracle 表定义到 DB2 数据类型

    - Oracle中的`DATE`类型也可以表示时间,但在DB2中,单独的时间部分应使用`TIME (HH24:MI:SS)`,C程序中可以声明为`tm_var[16]`的字符数组。 - 对于时间戳,Oracle的`TIMESTAMP`类型在DB2中可以映射为`TIMESTAMP`...

    DB2 V8.1错误代码

    - **描述**:日志文件不在文件数组中。这可能是因为日志文件丢失或未正确配置到DB2实例中。 **18. SQLP_RETRY** - **内部返回码**:0x071000DC - **十进制表示**:118489308 - **SQL代码**(如果适用):-902 - **...

    DB 2数据库资料

    DB2提供了一些内置函数来操作数组,例如 `CARDINALITY(myarray)` 用于返回数组中元素的数量。 #### 五、赋值 在DB2存储过程中,使用 `SET` 语句来进行变量和数组元素的赋值。 **1. SET语句的语法** ```sql SET ...

    laravel-db2doc:Laravel Db2Doc使您可以将数据库架构生成为markdown或JSON格式

    Laravel Db2Doc使您能够将数据库架构生成为markdown或JSON格式。 安装 为了在您的Laravel项目中安装cleaniquecoders/laravel-db2doc ,只需从终端运行composer require命令: $ composer require cleaniquecoders/...

    db2语句文档

    DB2 SQL Procedural Language (SQL PL) 是一种强大的编程工具,它融合了SQL查询数据的能力和编程语言的流程控制功能。这个语言标准用于创建复杂的数据库对象,如函数、存储过程和触发器,将业务逻辑封装起来,以提高...

    ORACLE到DB2应用移植方法探讨.pdf

    Oracle 特色的数据和功能 (ROWID,ROWNumber,%TYPE,%ROWTYPE) 以及集合类型 (联合数组,嵌套表,varrays) DB2 不支持。 四、移植方法探讨 方法 1:对 ORACLE 和 DB2 中各应用对象进行分析,找出对照的规则,设计...

    DB2错误解决手册

    - **01005** - **SQLDA中的条目数不够**:SQLDA(SQL描述数组)是用于描述结果集的结构。如果结果集中列的数量超过了SQLDA中定义的数量,则会出现此警告。 - **01007** - **未授予特权**:尝试执行某个操作时,如果...

    实战 Java 存储过程的编写及在 DB2 上的部署.docx

    例如,将查询结果放入ResultSet类型的数组中,然后由DB2处理返回。 清单2展示了经过初步修改的Java函数,它现在符合存储过程的要求: ```java public static ResultSet hello(int[] intp) throws SQLException { ...

Global site tag (gtag.js) - Google Analytics