精华内容
下载资源
问答
  • oracle存储过程返回一个结果集

    千次阅读 2019-07-10 21:45:08
    关于输出变量的类型,其实简单点可以是字符型,数字型,复杂点可以是结果集,任意自定义类型。 而函数必须返回值,所以在这篇博客将的存储过程返回值是针对输出参数的。 返回一个数字型 create or replace ...

    存储过程是没有返回值的,只是在参数列表中使用in,out类型参数来区分输入变量参数和输出参数,在sqlplus中,我们可以进行打印输出。
    关于输出变量的类型,其实简单点可以是字符型,数字型,复杂点可以是结果集,任意自定义类型。
    而函数必须有返回值,所以在这篇博客讲的存储过程返回值是针对输出参数的。

    返回一个数字型

    create or replace procedure hbk_out(result out number) is
    begin
    	result:=100;
    end;
    

    调用我们可以如下

    SQL> set serveroutput on
    
    SQL> declare
      2  abc number;
      3  begin
      4  hbk_out(abc);
      5  dbms_output.put_line(abc);
      6  end;
      7  /
    100
    
    

    也可以使用sqlplus命令variable定义变量,然后使用print打印变量的值。(个人推荐的方法)

    SQL> variable zll number;
    SQL> execute hbk_out(:zll);
    
    PL/SQL procedure successfully completed.
    
    SQL> print zll;
    
           ZLL
    ----------
           100
    
    

    存储过程返回一个结果集

    同理,我们只需要让out参数的类型变成游标类型,更进一步,我们还可以自定义类型,如游标指针
    定义包头

    create or replace package hbk_return_result as
    	type type_cursor is ref cursor;--定义游标指针,这里为一种新的类型
    	procedure getAll(p in out type_cursor);
    end hbk_return_result;
    

    包体实现

    create or replace package body hbk_return_result as
    	procedure getAll(p in out type_cursor) as
    	begin
    		open p for select * from T1;
    	end;
    end;
    

    调用

    SQL> variable result refcursor
    SQL> execute hbk_return_result.getAll(:result);
    
    PL/SQL procedure successfully completed.
    
    SQL> print result;
    
    NAME		     CITY
    -------------------- --------------------
    huangbaokang	     nankang
    zhanglulu	     ganzhou
    huangbaokang	     beijing
    
    
    

    使用函数返回结果集

    原理大同小异,让函数返回自定义的游标类型即可。

    create or replace function fun_return_res
    return hbk_return_result.type_cursor is
    p hbk_return_result.type_cursor;--定义游标变量
    begin
    	open p for select * from T1;
    	return p;--返回游标变量
    end;
    

    var是variable的简写,exec为execute命令的简写,给变量赋值。

    SQL> var fun_result refcursor
    SQL> exec :fun_result:=fun_return_res();
    
    PL/SQL procedure successfully completed.
    
    SQL> print fun_result
    
    NAME		     CITY
    -------------------- --------------------
    huangbaokang	     nankang
    zhanglulu	     ganzhou
    huangbaokang	     beijing
    
    
    展开全文
  • 现有SQL结果集一个如图1。我要得到另一个结果集如图2。具体下见详情

    现有SQL结果集一个如图1。我要得到另一个结果集如图2。具体下见详情

    此结果为虚拟,数据有N条,我要得到的结果集为:每个cid相同的里面只要state=1的第一条数据。我现在的解决方案为

    select cid from tab_tabA group by cid.然后用循环拼接SQL语句用union all拼接数据集。

    select * from

    (select top(1)* from tab_tabA where cid={0} and state=0 order by createtime asc) as a0

    union all

    select * from (select top(1)* from tab_tabA where cid={0} and state=0 order by createtime asc) as a1 ...........

    图1

    图2

    但是

    数据多了后效率会很差

     

     

    结论

    SELECT t.* from  tab_tabA t,(
    select min(id) as min_id from tab_tabA  where state=1 group by cid) t1
    where t.id =t1.min_id

    展开全文
  • 结果集没有当前行的解决方法

    万次阅读 多人点赞 2015-04-13 10:17:27
    结果集没有当前行

    使用jdbc的过程中,

    使用ResultSet rs=stm.executeQuery();

    在没有使用rs.next()函数时,直接调用rs.getString("title")等从rs结果集中取值的函数都会报:“结果集没有当前行”

    因为此时rs引用的位置在结果集的前一行,

    使用 rs.next();再调用rs.getString("title"),问题就得到解决了。

    展开全文
  • 使用存储过程,想返回一个像下面图的结果集。 这个在PL/SQL里面能实现吗? 因为经常要使用很多联合、多表等查询。而且条件也不同,所以想做个存储过程来保存起来,省得以后每次查询都要重新编写SQL。 刚刚...
    使用存储过程,想返回一个像下面图的结果集。 这个在PL/SQL里面能实现吗?


    因为经常要使用很多联合、多表等查询。而且条件也不同,所以想做个存储过程来保存起来,省得以后每次查询都要重新编写SQL。
    刚刚使用Oracle不多久,每次的返回结果都是在输出里面显示,但是在这里面是没有办法对表操作的。

    各位大大,这个方法PL/SQL里面能实现吗?



    举例:

    SQL code
    ?
    1
    2
    3
    4
    5
    --创建procedure
    create or replace procedure sql_test(out_return out sys_refcursor) is
    begin
      open out_return for 'select * from tgp_funds';
    end;


    SQL code
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    --引用
     
    declare
      cur1   SYS_REFCURSOR;
      i      tgp_funds%rowtype;
    begin
     sql_test(cur1);
      loop
        fetch cur1
          into i;
        exit when cur1%notfound;
        dbms_output.put_line('----------------:' || i.fnd_id);--fnd_id为表tgp_funds中的fnd_id 列
      end loop;
      close cur1;
    end;

    展开全文
  • 必须外面包层,直接两个结果集 union 发现正常的在上面,到期的在下面,但是各自内部是无序的,也就是说union的时候是没有order by做的union, 内部的order by没有生效, 包了层应该是产生了临时中间表,次序...
  • Mybatis结果集自动映射

    万次阅读 2017-05-02 17:02:35
    时候其实就用到了Mybatis的结果集自动映射。Mybatis的自动映射默认是开启的,其在映射的时候会先把没有在resultMap中定义字段映射的字段按照名称相同的方式自动映射到返回类型的对应属性上。自动映射的时候会...
  • ![图片说明](https://img-ask.csdn.net/upload/201608/01/1470050683_888409.jpg) 如果取出的结果中某个字段为空,就给一个默认值
  • 错误:结果集没有当前行的解决方法 使用jdbc的过程中,在没有使用rs.next()函数时,直接调用rs.getString(“title”)等从rs结果集中取值的函数都会报:“结果集没有当前行“ 这是因为因为此时rs引用的位置在结果...
  • 同事问我上述问题,我把我的实现思路写出来。...如果查询没有结果,那就把默认值显示出来 举例: select * from ( select table_name from user_tables where rownum < 3 union all ...
  • DB2 存储过程返回结果集

    千次阅读 2018-05-14 21:26:21
    存储过程返回结果集,但是并未明确定义out参数的情况下,要正确获取到结果集,则必须明确设置返回结果集个数:result set 结果集个数如果没有声明返回结果集个数,那么存储过程中定义的游标是获取不到其值的1:创建...
  • SQL语句对结果集操作

    千次阅读 2016-12-04 20:40:21
    前言集合常见的操作是 交并差的操作,那么SQL语句是如何实现的呢?...1.2限定条件 要是用Except来连接结果集4限定条件。 (1)、子结果集要具有相同的结构。 (2)、子结果集的列数必须相同。 (3)、子结果
  • 结果集(ResultSet)用法

    万次阅读 多人点赞 2016-07-28 11:50:24
    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.  结果集读取数据的方法主要是...
  • PL/SQL 怎么判断两个结果集是否相等

    千次阅读 2013-02-28 11:01:19
    数据库服务器:Oracle 现在个结果集: A1: Cause Rate UEG 2000 GYU 1900 NBU 2900 CET 3000 A2: Cause Rate UEG 2000 GYU
  • 个结果集ResultSet的问题

    千次阅读 2011-10-31 18:30:56
    当让stmt来返回一个结果集的时候,前面一个ResultSet会自动关闭。 即在执行stmt.executeQuery的时候,会自动关闭上一次stmt.executeQuery的结果集。 所以,我们用: ResultSet rs = stmt.executeQuery...
  • ResultSet 结果集

    千次阅读 2012-04-17 14:39:32
    ResultSet 简单介绍 这篇文章并没有给出如何使用... 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功
  • mybatis调用存储过程返回多个结果集

    千次阅读 2017-07-14 11:39:14
    我使用的是mysql数据库,映射2实体对象:Account ,BankWatermybaits调用的时候需要使用resultMap属性由于mysql数据库支持存储过程使用select返回结果集,所以这里没有写out传入参数 <id column="account_id" pr
  • 类似这样的场景,我作为一个写作者来说,我写了很多篇文章,如果把我抽象成一个对象,那么该如何通过Mybatis 获取到我和我写的文章呢?这种情况下,使用Mybatis结果集的集合就可以满足需求。 在我的实际项目中,...
  • Php使用mysqli_result类处理结果集有以下几种方法 ...以一个关联数组,数值索引数组,或者两者皆的方式抓取一行结果。 fetch_object() 以对象返回结果集的当前行。 fet
  • 算法大数据qq交流群:397173819 经常需要对一些结果集进行诸如求并集,交集等操作。...1.Union求并集Union可以对两或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集
  • 返回的是一个List这样的类型,你可以另外创建一个DTO然后通过循环,把Object[]中的每一个值,与dto中的字段对应,组成一个List的对象,例如: People , Card 一个人和身份证 People:id ,name, age;  Card:...
  • SQL 操作结果集 -并集、差集、交集、结果集排序 操作结果集  为了配合测试,特地建了两表,并且... Union可以对两或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。  
  • mysql union, union all合并两个结果集

    千次阅读 2018-09-17 09:25:39
    项目中一个功能需要从两个表中查询并且分页。一开始没想到这样联合查询,跟着别人的思路在苦搞分页,搞了一个多钟都还没搞定,郁闷死我。同事提醒联合查询,如梦初醒。汗颜。。。。 转载自:...
  • 此处实例:从test库取id字段结果集,存储(id,2 x id)到set_value表中 前提 test表: set_value表: 具体步骤 第一步: 新建转换get_id_rows: 第二步: 新建作业: 按图所示连接各个组件 第一个js: var ...
  • MySQL笔记13:查询结果集

    千次阅读 2018-01-11 16:24:16
    1.用mysql进行数据查询的时候,mysql会返回一个结果集给我们,接着我们需要调用mysql的API,从这个结果集中取得我们要的数据。取完数据之后,需要释放这个结果集。 2.mysql的结果集其实就是一个MYSQL_RES结构,其...
  • 如何将PreparedStatement查询得到的结果集存储起来--方法:采用对象数组
  • left 的优化:首先,mysql都是使用(Nested Loop )循环套嵌的方式实现join,这里包括两部分:驱动表结果集作为条件连接被驱动表X,被驱动表根据驱动表结果查询数据集Y。时间复杂度(X*Y),这里的第二部分是...
  • 数据库结果集ResultSet详解

    千次阅读 2014-08-19 22:56:40
    这篇文章并没有给出如何... 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等。
  • Union因为要进行重复值扫描,所以...如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 union和union
  • postgresql 函数返回结果集

    万次阅读 2011-11-26 22:56:07
    pgsql function 系列之一:...我们在编写postgresql数据库的函数(或称为存储过程)时,时常会遇到需要返回一个结果集的情况,如何返回一个结果集,返回一个结果集有多少种方式,以及如何选择一个合适的方式返回结果

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 934,422
精华内容 373,768
关键字:

一个结果集有一个结果集没有