自己解决问题了 问题总结: 1.index by表不能存储在数据库中的type中,故选择嵌套表. 2.ibatis不支持oracle的复合数据类型的返回.(个人理解) 3.替代方案:用返回oracle游标来代替复合数据类型.ibatis能接受oracle游标类型. 注意此处是ibatis2.3 部分代码: 1.java 1 private Map<String,Object> userStateResult(Users users)throws Exception{ 2 Map<Stri…
1.分页类 package org.zh.basic; /** * 页面类 * * @author keven * */ public class PageInfo { // 定义 private String p_tableName; // -表名 private String p_strWhere; // --查询条件 private String p_orderColumn; // --排序的列 private String p_orderStyle; // --排序方式 private…
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. 但是若按正规的oracle写法,存储过程写在包体里面, 如果这样的话,PB会找不到此存储过程(如果用直连的方式)(如果用ODBC的方式则有可能不能正常识别存储过程的参数) 因此我们需要将存储过程单独写. 首先我们来看下oracle正规的返回结果集的存储过程的写法 方法一: create or re…
oracle的minus返回第一个表中有.第二个表中没有的数据 CREATE TABLE hovertree_union_1 ( id INT, val ) ); CREATE TABLE hovertree_union_2 ( id INT, val ) ); , 'A'); , 'B'); , 'C'); , 'A'); , 'A'); , 'B'); , 'D'); SQL> SELECT * FROM hovertree_union_1 MINUS SELECT * FROM hover…
创建变长数组类型 ) );  这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE varray_type MODIFY ELEMENT TYPE ) CASCADE; CASCADE选项吧更改传播到数据库中的以来对象.也可以用 INVALIDATE 选项使依赖对象无效 增加变长数组的元素数目 ALTER TYPE vrray_name MODIFY LIMIT CASCADE;…
http://blog.sina.com.cn/s/blog_6f3ca78f01010pmj.html iBatic调用与JAVA调用很类似,只是JAVA把参数的注册放到了类里面,而iBatis把参数的注册放到了XML配置文件里,下面两个例子,第一个是返回普通数据,第二个是返回游标. 1:返回普通数据 Map map = new HashMap(); map.put("username", "JACK"); sqlMapClient.queryForObject(…
创建表: create table tb1( id int , name ) ) ------------------------------------------------- 创建返回游标的存储过程: create proc tb1_proc ( @cur cursor varying output ) as begin set @cur=cursor for select * from tb1 end open @cur ---------------------------------…
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="empno" column="empno"/> <result property="ename" column="ename"/> <result property="mgr" column="…
存储过程示例: create or replace procedure Fsp_Plan_CheckPrj(v_grantno varchar2, v_deptcode number, v_cursor out sys_refcursor) is ……………… ---返回统计结果 open v_Cursor for select s.plan_code, s.plan_dept, s.plan_amount, s.exec_amount, p.cname as plan_name, d.cnam…
最近在用ibatis.net框架和oracle 11g开发一套程序.其中有一个需求就是通过存储过程,查询指定条件的数据集. 但是在开发的过程中遇到了问题,问题如下: 1.如何通过ibatis.net执行存储过程? 2.通过ibatis.net执行存储过程时,如何传参数? 3.通过ibatis.net执行存储过程时,传递参数过程中,dbType和type是如何对应的? 4.oracle存储过程中返回的游标集合SYS_REFCURSOR对应dbType是什么? 5.通过ibatis.net执行存储过…
在oracle数据库中你要在程序里得到一张表的数据就必须先创建游标和SQL Service不一样. --创建游标create or replace package pkg_Dataas type refcursor is REF cursor; procedure pro_rows(refcursor out refcursor);end pkg_Data; --创建存储过程create or replace procedure prc_DataInput(dateStr in varchar2…
找了好久,网上也没示例,全是java的,没办法,后来看到一个网上别人写的例子. http://www.myfirm.cn/blog/article/Control/13.html 上面照套还是出错,我X,没找到类的属性,那么灵机一动,应该是个结果集,就List了,给类加个属性 搞定. public class Product { public int ProductId { get; set; } public string ProductName { get; set; } public Li…
复制代码 代码如下:CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR2, P_RECEIVER VARCHAR2, P_SERVER VARCHAR2, P_PORT NUMBER DEFAULT 25, P_NEED_SMTP INT DEFAULT 0, P_USER VARCHAR2 DEFAULT NULL, P_PASS VARCHAR2 DEFAULT…
如果报表逻辑非常复杂的话, 可以把报表逻辑放到存储过程里,加工一个全局临时表.前端查询的时候只查询临时表即可.只是第一次查询需要忍受加工的时间. --创建存储过程,返回SYS_REFCURSOR CREATE OR REPLACE PROCEDURE P_GET_AGENT(V_AGENT_CATE IN VARCHAR2, V_PAGE IN INTEGER, O_CURSOR OUT SYS_REFCURSOR) IS BEGIN INSERT INTO TMP_TAB_T_AGENT(AG…
一.返回一个值 --创建存储过程 create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is begin select cname into spname from gb_customerinfo where ccode = spcode; end; //java代码调用和接受返回值 public static void main(String[] arg) { try { Class.forN…
一.带游标的存储过程 游标作为参数有两种类型: 1.声明系统游标类型 SYS_REFCURSOR 1)游标作为存储过程的参数: --带游标的存储过程 CREATE OR REPLACE PROCEDURE PRO_EMP_IN(EMP_CUR SYS_REFCURSOR) AS V_NAME EMP.ENAME%TYPE; V_SAL EMP.SAL%TYPE; BEGIN LOOP FETCH EMP_CUR INTO V_NAME, V_SAL; DBMS_OUTPUT.PUT_LINE('…
Oracle存储过程: CREATE OR REPLACE PROCEDURE getcity ( citycode IN VARCHAR2, ref_cursor OUT sys_refcursor /* 这个sys_refcursor类型在SYS.STANDARD包中 */ ) AS BEGIN OPEN ref_cursor FOR SELECT * FROM tb_city_code WHERE city_code = citycode; END; / Java调用代码: try { D…
grant create any table to username; grant create any procedure to username; grant execute any procedure to username; 创建执行JOB权限 grant create job to 用户; grant manage scheduler to 用户; 给一个表的读取权限 grant select on 表名 to 用户名; 删除修改权限 alter是有truncate权限 GRANT S…
<parameterMaps> <parameterMap id="delVersionBagInfoParam" class="DelVersionBagInfo"> <parameter property="UserId" column="userId"/> <parameter property="VerBagId" column="verBagId…
c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS     type Tabletype is ref cursor;     PROCEDURE SP_CPZD      (      CPNO IN VARCHAR2,      STATUS IN VARCHAR2,      t_sql out Tabletype      );END;CRE…
MSSQL的存储过程返回数据集好简单,直接SELECT 就可以. ORACLE的存储过程返回数据集必须通过游标. 创建ORACLE存储过程 create or replace procedure cxg_test(out_var out sys_refcursor)  is   begin    open out_var for select * from a;  end; 调用ORACLE存储过程 declare     cur_calling sys_refcursor;    v_row…
http://www.2cto.com/database/201204/127180.html oracle实现存储过程返回查询结果集合的方法   --实现存储过程返回查询结果集合的方法 ,以下代码来自网络整理  http://topic.csdn.net/u/20090721/12/ba403739-3212-4016-83ec-2a7062f21081.html  Java代码   --第一种方法   create or replace Package SYSBasic   as  www.…
一.介绍  1.定义 嵌套表是表中之表.一个嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行.在某种意义上,它是在一个表中存储一对多关系的一种方法.    简单的说:就是把一个表中的字段定义为一个表,这个字段表的数据存储在外部的一个表中.嵌套表可以有效地代替多个表之间的连接. 补充: 当需要存储与表有关的数据时,可选的方案包括:可变数组.嵌套表.独立表.三种方案有什么区别,或者说什么情况下适用呢? (1)可变数组:可变数组是不能被索引的,当记录量很大时…
1. 分类 常见的游标可分为显示游标.隐式游标.静态游标和动态游标四大类: 1.1 显示游标 显式是相对与隐式cursor而言的,就是有一个明确的声明的cursor.显式游标的声明类似如下: delcare 游标关键字cursor 游标名 is 数据集; 游标从declare.open.fetch.close是一个完整的生命旅程.当然了一个这样的游标是可以被多次open进行使用的,显式cursor是静态cursor,她的作用域是全局的,但也必须明白,静态cursor也只有pl/sql代码才可以使…
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13|  分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解1. ORACLE常用的字段类型ORACLE常用的字段类型有VARCHAR2 (size) 可变长度的字符串, 必须规定长度CHAR(size) 固定长度的字符串, 不规定长度默认值为1NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数最长38位. 不够位时会四舍五入.DAT…
原文链接:http://www.jb51.net/article/20160.htm 实际项目当中经常需要在一个存储过程中调用另一个存储过程返回的游标,本文列举了两种情况讲述具体的操作方法. 第一种情况是返回的游标是某个具体的表或视图的数据,如: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;…
注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结果集.特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇: 1.存储过程返回结果集 2.Java中执行存储过程以及多结果集处理 3.返回临时表中数…
一个扩展存储过程调用另一个存储过程,示例: 被调用存储过程:最后会返回一个游标,游标返回一个值.调用这个存储过程的存储过程同样需要获取它. procedure SearchBill --根据到货单号查询所有行号 ( P_code VARCHAR, P_UserCode varchar , P_org varchar, P_warehouse varchar, p_movetype varchar, p_billtype varchar, p_note varchar, p_isred varch…
oracle存储过程和游标的使用 (2011-04-19 14:52:47) 转载▼ 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须首先声明游标分类: 静态游标:分为显式游标和隐式游标. REF游标:是一种引用类型,类似于指针. 显式游标: CURSOR 游标名 ( 参数 ) [返回值类型] IS  Select 语句 生命周期: 在大多数时候我们在设计程序的时候都遵循下…
(转)oracle 存储过程 带游标作为OUT参数输出 存储过程返回OUT参数的游标 例子. 包中带过程 要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 procedure AAA(变量名 out [cur_name])如此申明OUT变量 存储过程 用系统默认的 sys_refcursor 游标类型 定义变量就OK了 --===================================================== Sql代码 : --…