zoukankan      html  css  js  c++  java
  • 取存过和函数的返回值

    目录

    一、取函数的返回值

    1.取函数的系统类型数据

    2.取函数的自定义类型数据

    3.取函数的自定义类型数据集合

    二、取存储过程的返回值

    1.取存过的系统类型数据

    2.取存过的自定义类型数据

    3.取存过的自定义类型数据集合

    一、取函数的返回值

    0.创建自定义类型

    --自定义类型
    create or replace type mytype as object
    (
      str1 number,
      str2 varchar2(10)
    );
    --自定义类型集合
    create or replace type  mytype_list as table of mytype;

    1.取函数的系统类型数据

    --1函数 返回字符串
    create or replace function fun_ceshi1(num1 number, num2 number)
      return varchar2 as
      str1 varchar2(111);
    begin
      str1 := '测试时。。。';
      return str1;
    end;
    --取值
    select fun_ceshi1(1,1) from dual;

    2.取函数的自定义类型数据

    --2函数 返回自定义类型
    create or replace function fun_ceshi2(num1 number, num2 number)
      return mytype as
      my mytype;
    begin
     select mytype(ename1, ename2)
       into my
       from (select t.empno ename1, t.ename ename2 from emp t where rownum=1);
      return my;
    end; 
    --
    select fun_ceshi2(1,1) from dual;

    3.取函数的自定义类型数据集合

    --3函数 返回自定义类型集合
    create or replace function fun_ceshi3(num1 number, num2 number)
      return mytype_list as
      my mytype_list;
    begin
     select mytype(ename1, ename2) BULK COLLECT
       into my
       from (select t.empno ename1, t.ename ename2 from emp t);
      return my;
    end; 
    --
    select * from table(fun_ceshi3(1,1));

    二、取存储过程的返回值

    1.取存过的系统类型数据

    --1存过 返回字符串
    create or replace procedure pro_ceshi1(num1 number,
                                          num2 number,
                                          num3 out varchar2) as
    begin
      select '字符串num' into num3 from dual;
    end;
    --调用
    declare
      num3 varchar2(111);
    begin
      pro_ceshi1(1, 1, num3);
     dbms_output.put_line(num3);
    end;

    2.取存过的自定义类型数据

    --2存过 返回自定义类型
    create or replace procedure pro_ceshi2(num1 number,
                                          num2 number,
                                          strType out mytype) as
    begin
      select mytype(ename1, ename2)
       into strType
       from (select t.empno ename1, t.ename ename2 from emp t where rownum=1);
    end;
    --调用
    declare
      strType mytype;
    begin
      pro_ceshi2(1, 1, strType);
      dbms_output.put_line(strType.str1 || '  ' || strType.str2);
    end;

    3.取存过的自定义类型数据集合

    --3存过 返回自定义类型集合
    create or replace procedure pro_ceshi3(num1 number,
                                          num2 number,
                                          strType out mytype_list) as
    begin
       select mytype(ename1, ename2) BULK COLLECT
       into strType
       from (select t.empno ename1, t.ename ename2 from emp t);
    end;
    
    --调用
    declare
      strType mytype_list;
      cursor c_c is
        select * from table(strType);
    begin
      pro_ceshi3(1, 1, strType);
      for v_r in c_c loop
        dbms_output.put_line(v_r.str1 || '  ' || v_r.str2);
      end loop;
    end;
  • 相关阅读:
    c# 子窗体打开或者切换就最大化
    TreeView失去焦点时亮显选中状态
    解决 RecursionError: maximum recursion depth exceeded
    CentOS7安装jdk1.8
    CentOS7安装mysql5.7
    CentOS7安装redis3.2.3
    CentOS7安装nginx1.8
    centos7设置redis开机自启动
    Linux下执行sh脚本报错:$' ': command not found
    Linux下使用unhide查看隐藏文件
  • 原文地址:https://www.cnblogs.com/zhaopei/p/4250728.html
Copyright © 2011-2022 走看看