创建游标.存储过程及包

简介:
创建游标.存储过程及包
/*********************************游标********************************/
/*单向游标:
  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;
 
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-28 23:44 温景良(Jason) Views( 1966) Comments( 0) Edit 收藏
 

公告

hidden hit counter
 
本文转自 我的程序人生博客园博客,原文链接: http://www.cnblogs.com/wenjl520/archive/2009/04/28/1445769.html,如需转载请自行联系原作者
相关文章
|
7天前
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
14 1
|
7天前
|
存储 SQL Oracle
02-PostgreSQL 存储过程的进阶介绍(含游标、错误处理、自定义函数、事务)
02-PostgreSQL 存储过程的进阶介绍(含游标、错误处理、自定义函数、事务)
|
7天前
|
存储 SQL 关系型数据库
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
53 0
|
7天前
|
存储 SQL Oracle
|
7天前
|
存储 SQL 定位技术
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
|
7天前
|
存储 SQL 关系型数据库
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
50 0
|
9月前
|
存储 关系型数据库 MySQL
MySQL存储过程中双层游标嵌套循环实例
MySQL存储过程中双层游标嵌套循环实例
|
7天前
|
存储 SQL NoSQL
mysql存储过程和存储函数
mysql存储过程和存储函数
|
7天前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
7天前
|
存储 关系型数据库 MySQL
MYSQL存储过程基础入门教程
MYSQL存储过程基础入门教程
14 0