工作中常需要经过一段复杂逻辑处理后,得出的一个结果集.并能够将这个结果集作为一个表看待,去进行关联查询 我一般采用建立函数function的方式来处理. --创建包,声明function和typeCREATE OR REPLACE PACKAGE PAK_TEM AS TYPE DATE_RECORD IS RECORD --自定义类型-行(含字段及类型) ( NAME ), VALUE ) ); TYPE DATE_TABLE IS TABLE OF DATE_RECORD; --自定义tab…
使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我们怎么实现跟SQL SERVER同样的功能呢?且看以下代码: create or replace procedure sp_getdept (rep_type in varchar2,sel in varchar2,result out sys_refcursor) as seq ); info )…
--function /* 函数是有返回值.-只能有一个返回值. 语法 Create or replace func1(参数) Return varchar2 As Pl/sql块 Return 'Jack'; */ --创建和调用 create or replace function f1 return varchar2 as --声明变量 begin return 'jack'; end; select f1()from dual; --在plsql使用 set serveroutput o…
CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype); END pkg_test; -------------------------------------------------------------------CREATE OR REPLACE PACKAGE BODY pkg_test AS …
可以通过返回 Refcursor 类型的函数,或者out 类型的函数或 procedure 返回结果集. 一.返回refcursor 类型的函数 create or replace function f_get_set(refcursor,refcursor) returns setof refcursor as $$ begin open $1 for select * from t1; return next $1; open $2 for select * from t1; return…
一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of number; 上面的类型定义好后,在function使用可用返回一列的表,稍后介绍返回多列的 2. 创建函数 在函数的定义中,可以使用管道化表函数和普通的方式,下面提供两种使用方式的代码: 1).管道化表函数方式: create or replace function f_pipe (s num…
近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据.需求为:多个端口流量每五分钟累计汇总一次.如果用程序实现则为讲所有数据取出做每五分钟统计,元数据获取带来的数据量将是10万条以上. 在数据库中做汇总统计只需要24*12=288条记录. 具体实现方式如下: /*打开日志输出*/ Set serveroutput on ; /*创建类型*/ creat…
pgsql function 系列之一:返回结果集--------------------------------------------------------------------------------我们在编写postgresql数据库的函数(或称为存储过程)时,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,返回一个结果集有多少种方式,以及如何选择一个合适的方式返回结果集,这是一个需要仔细考虑的问题.本文仅简单的罗列出各种返回结果集的方式并试图分析他们的特点,而采用何种方式则…
函数返回值一般是某一类型值,如int,varchar,date等,返回结果集时就需要用到setof语法. 创建数据 create table class(id number primary key, name varchar(20)); create table student(id number, name varchar(20),classtid number references class); insert into class values (1, '六年一班'),(2, '六年二班'…
如果你是像我一样初次使用Net+Oracle的结合,我想你会跟我一样,有很大的概率碰到这个问题 =======================================================PLS-00306: wrong number or types of arguments in call to '存储过程名'orA-06550: line 1, column 7:PL/SQL: Statement ignored==============================…
今天折腾了3个小时,为一个以前不知道的oracle函数机制: 在sql查询中,如果一个查询未能获取记录,oracle不会报错 如select aa from bb where 1=2; 但在oracle函数中,如果是赋值语句,就会报错ORA-01403: no data found 数据未找到 如select aa into kk from bb where 1=2; 今天的错误就在这里,主要是弄混了字段null和记录为空的null,而且是在递归调用中,sql的断点调试其实是直接进入了最后一层递…
[函数]Oracle函数系列(1)--字符函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 常见字符函数(lower.upper.initcap.concat.substr.length.intr.lpad.rpad.trim.chr.ascii.replace.translate)的使用 ② 判断字符串中是否含有汉字 ③ substr和instr的联合使用 ④…