zoukankan      html  css  js  c++  java
  • 创建游标.存储过程及包

    创建游标.存储过程及包
    /*********************************游标********************************/
    /*单向游标:
      declare cursor  游标名  is select 语句
      带参游标:
      declare cursor  游标名  (参数1 类型,.....)is select 语句(可以带参数)
      游标属性:
              %found     ---是否找到
              %isopen    ---是否打开
              %notfound  ---找不到游标
              %rowcount  ---判断游标是否有结果
      游标循环:
              FOR 变量 IN 游标名 LOOP
              语句
              END LOOP
    /************例子**************/
    declare
           cursor cur_emp is select * from emp;
           e emp%rowtype;
           begin
           open cur_emp;
           fetch cur_emp into e;
           while cur_emp%found
           loop
               dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
               fetch cur_emp into e;
           end loop;
           close cur_emp;
           end;
    PL/SQL 过程已成功完成。
     
    /*******不需定义和关闭游标****************/

    SQL> begin
      2       for e in(select * from emp)
      3       loop
      4         dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
      5       end loop;
      6  end;
      7  /
     
    PL/SQL 过程已成功完成。
     
    /*************************************存储过程******************************/
    /*过程(procedure)
         create or replace procedure
         (参数1  in/out/in out  类型,
          参数2  in/out/in out  类型,
           ..........)
           is/as
           pl/sql语句块
    /************例子**************/
      1  create or replace procedure proc_emp
      2  ( j in varchar2,
      3    c  out integer)
      4  as
      5    counter integer:=0;
      6  begin
      7  for e in (select *from emp where job=j)
      8  loop
      9  dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
     10  counter:=(counter+1);
     11  end loop;
     12  c:=counter;
     13* end;
     14  /
     
    过程已创建。
    /********调用************/
    exec 过程([参数])
     
    /**********************************函数***************************/
    /*函数(FOUCTION)
           create or replace function 名
              return 类型   is/as
              pl/sql语句块
    /***********例子************/
      1  create or replace function fun_emp
      2     ( j in varchar2)
      3       return integer
      4        as
      5       counter integer:=0;
      6    begin
      7    for e in (select *from emp where job=j)
      8   loop
      9    dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
     10   counter:=(counter+1);
     11    end loop;
     12    return counter;
     13* end;
    SQL> /
     
    函数已创建。
    执行:exec 函数([参数])
     
    /************************************创建包**********************/
    /*包头:
     create or replace package 名
        is/as
        定义部分
        end
      包体:
     create or replace package body 名
            is/as
            代码部分
            end
    /*********例子*********************/
    --..........建包头................
    create or replace package pag_wlxt as
    procedure proc_ruku(code  varchar2);              -- 入库单号
    end;
     
    --.........建包体.................
     
    create or replace package body pag_wlxt as
    procedure proc_ruku(code  varchar2) is
    num integer :=0;
    counter integer :=0;
    shbz wltrkgl0.rkshbz%type;
    rkcb wltrkgl0%rowtype;
    kcb wltkcgl0%rowtype;
     
  • 相关阅读:
    asp.net Core 中AuthorizationHandler 实现自定义授权
    Android 动态获取ListView的高度
    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口
    Java日期时间思维导图整理
    《领域驱动设计》第二部分:模型驱动设计的构造块 第四章:分离领域 阅读笔记
    《领域驱动设计》第一部分:让领域模型发挥作用 第三章:绑定模型和实现 阅读笔记
    《领域驱动设计》干货整理
    简单的服务熔断方案
    框架设计注意事项——生命周期
    【翻译】 Guice 动机——依赖注入的动机
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1445769.html
Copyright © 2011-2022 走看看