• 创建游标.存储过程及包


    创建游标.存储过程及包
    /*********************************游标********************************/
    /*单向游标:
      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;
     
  • 相关阅读:
    docker-compose 命令不存在
    linux安装rabbitmq ssm集成rabbitmq
    tomcat参数错误 服务器400
    无限极分内 自联查询
    图片移入变大 点击图片切换 点击按钮显示图片
    js正则表达式基本书写
    随鼠标移动
    输入电话号码
    添加新句子
    窗口的弹出与关闭
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1445769.html
Copyright © 2020-2023  润新知