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;
     
  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1445769.html
Copyright © 2011-2022 走看看