博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
创建游标.存储过程及包
阅读量:6316 次
发布时间:2019-06-22

本文共 2607 字,大约阅读时间需要 8 分钟。

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

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。

  作      者:温景良
  文章出处:  或 

分类:
+加关注
0
0
上一篇:
下一篇:
posted @ 2009-04-28 23:44 Views( 1966) Comments( 0)
 
最新IT新闻:
·
·
·
·
·
»
最新知识库文章:
·
·
·
·
·
»

公告

 
本文转自 博客园博客,原文链接: ,如需转载请自行联系原作者
你可能感兴趣的文章
iOS SDK开发(入门指南)
查看>>
JS写的一个抽奖小Demo从普通写法到设计模式再向ES6的进阶路程
查看>>
十分钟弄懂:数据结构与算法之美 - 时间和空间复杂度
查看>>
Android彻底掌握网络通信
查看>>
(小白适用)前端数据交互(ajax form)
查看>>
Flutter 网络请求框架封装
查看>>
android自定义View&自定义ViewGroup(下)
查看>>
[jaeger] 二、客户端使用 (Java版本)
查看>>
【Java】变长参数的坑
查看>>
怎么样有效防电脑辐射
查看>>
1,实验环境的搭建
查看>>
AnnotationUtil注解
查看>>
mybatis 自动生成dao、bean、mapper
查看>>
如何一直处在学习区?
查看>>
基于 .NET Core 的跨平台 GIT HTTP 服务器实现
查看>>
Python脚本在安卓开发中的使用
查看>>
SqlServer的CASE,JOIN使用优化一例
查看>>
用Java语言打印九九乘法口诀表
查看>>
Ubuntu Linux上的最佳照片应用程序
查看>>
伍哥原创之用搜狗细胞词库制作mmseg词典
查看>>