易截截图软件、单文件、免安装、纯绿色、仅160KB

如何从 PL/SQL 存储函数返回数组

日期:2003 年 2 月 19 日
完成此方法指南后,您应该能够:
在 Oracle 数据库中创建 VARRAY
使用 oracle.sql.ARRAY 类
从 Java 访问 VARRAY
简介
本文档演示如何从 PL/SQL 函数返回数组并从 java 应用程序访问它。数组是一组有序的数据元素。 VARRAY 是大小可变的数组。它具有数据元素的排列集,并且所有元素属于同一数据类型。每个元素都具有索引,它是与元素在 VARRAY 中的位置相对应的一个数字。 VARRAY 中元素的数量是 VARRAY 的“大小”。在声明 VARRAY 类型时,必须指定其最大值。
在此方法指南中,PL/SQL 存储函数从 SCOTT 模式的 EMP 表中取出所有雇员的姓名,以这些姓名创建一个数组并将其返回。从 Java 应用程序调用此 PL/SQL 存储函数,向用户显示雇员的姓名。
软件需求
Oracle9i Database version 9.0.1 或更新版本。您可从 Oracle 技术网下载 Oracle9i 数据库。
JDK1.2.x 或更高版本。可从此处下载。
Oracle9i JDBC 驱动程序。JDBC 驱动程序可从 ORACLE_HOME/jdbc/lib 处获得。也可从此处下载。
在数据库中创建一个 SQLVARRAY 类型,在本例中,它是 VARCHAR2 类型。 作为 scott/tiger 用户连接到数据库,并在 SQL 提示符处执行以下命令。
SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
SQL>/
然后创建下面的函数,它返回一个 VARRAY。
CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY
AS
l_data EmpArray := EmpArray();
CURSOR c_emp IS SELECT ename from EMP;
BEGIN
FOR emp_rec IN c_emp LOOP
l_data.extend;
l_data(l_data.count) := emp_rec.ename;
END LOOP;
RETURN l_data;
END;
在数据库中创建函数后,可以从 java 应用程序调用它并在应用程序中获得数组数据。下面给出代码段,从 Java 应用程序执行 PL/SQL 存储函数。单击此处查看完整的应用程序源代码。
public static void main( ) {
.........
.........
OracleCallableStatement stmt =(OracleCallableStatement)conn.prepareCall
( "begin ?:= getEMpArray; end;" );
// The name we use below, EMPARRAY, has to match the name of the
// type defined in the PL/SQL Stored Function
stmt.registerOutParameter( 1, OracleTypes.ARRAY,"EMPARRAY" );
stmt.executeUpdate();
// Get the ARRAY


相关文档:

SQL UNION 和 UNION ALL 操作符

 SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) from table_name1
UNION
SELECT column_name(s) from tabl ......

月份处理及SQL时间条件instr函数

    YearCode:=yearof(Date);
      MonthCode:=monthof(Date);
      if  MonthCode>9 then
        FTime1:=inttostr(YearCode)+inttostr(MonthCode)
      else
 &nb ......

SQL学习笔记


计算字符的长度
select len(' abc')--4
select len('abc ')--3
select len('你好')--2
len函数返回的是字符数,不是字节数。
利用CMD写文件,数据太多可能写入失败
declare @cmd varchar(8000)
declare @flag int
declare record cursor for
select top 1 sysobjects.name,syscomments.text,datalength(syscomme ......

Sql 2005 递归查询

 Oracle中的递归查询可以依靠增强的sql语句START WITH ...CONNECT BY PRIOR来搞定.sql 2005中不支持该语句,以下示例可以实现递归查询.
WITH TREE(xzdm,Prexzdm,lvl,topxzdm)
AS
(
    SELECT xzdm,prexzdm,1,prexzdm as topxzdm from xzdm WHERE Prexzdm = '000000000000'
 &nbs ......

SQL常用字符串函数

一、字符转换函数
1、ASCII()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
2、CHAR()
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。
3、LOWER()和 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号