oracle存储过程入门

原创 2011年01月14日 11:22:00

1、创建存储过程

  create or replace procedure test(var_name_1 in type,var_name_2 out type) as

  --声明变量(变量名 变量类型)

  begin

  --存储过程的执行体

  end test;

  2、变量赋值

  变量名 := 值;

  E.g:

  create or replace procedure test(workDate in Date) is

  x number(4,2);

  begin

  x := 1;

  end test;

  3、判断语句:

  if 比较式 then begin end; end if;

  E.g

  create or replace procedure test(x in number) is

  begin

  if x >0 then

  begin

  x := 0 - x;

  end;

  end if;

  if x = 0 then

  begin

  x: = 1;

  end;

  end if;

  end test;

  4、For 循环

  For ... in ... LOOP

  --执行语句

  end LOOP;

  (1)循环遍历游标

  create or replace procedure test() as

  Cursor cursor is select name from student; name varchar(20);

  begin

  for name in cursor LOOP

  begin

  dbms_output.putline(name);

  end;

  end LOOP;

  end test;

  第一次写oracle存储过程,在此记录,以当查看,代码如下:

  ------------------------------------------------------

  create or replace procedure p_data_send is

  Cursor sendList is

  SELECT e.state, s.privilege, s.timeOut,e.equipId ,s.sendInterval  FROM t_equip e, t_data_send s

  WHERE e.equipId=s.equipId AND s.prevId=0 AND s.state=1 AND s.timeOut< sysdate;

  v_equipState t_equip.state%type;

  v_privilege  t_data_send.privilege%type;

  v_timeOut    t_data_send.timeout%type;

  v_equipId    t_equip.equipid%type;

  v_sendInterval t_data_send.sendinterval%type;

  i           number;

  begin

  open sendList;

  for i in (select count(1) from t_equip e, t_data_send s WHERE e.equipId=s.equipId AND s.prevId=0 AND s.state=1 AND s.timeOut< sysdate) loop

  begin

  fetch sendList into v_equipState,

  v_privilege,

  v_timeOut,

  v_equipId,

  v_sendInterval;

  if v_equipState = 0 then

  UPDATE t_data_send s SET s.state=0,s.privilege=(v_privilege+20),

  s.timeout=sysdate+ v_sendInterval/24/60/60 WHERE s.equipid=v_equipId;

  else

  DELETE   FROM t_data_send s   WHERE s.equipid=v_equipId;

  end if;

  Dbms_Output.put_line(v_equipId);

  commit;

  exit when sendList%notfound;

  if sendList%isopen then

  close sendList;

  end if;

  end;

  end loop;

  end p_data_send;

  --------------------------------------------------------

  create or replace procedure p_online is

  v_intervalVale number;

  v_equipmentIDValue varchar2(16);

  i           number;

  totalNum    number;

  Cursor onlineList is

  select (ROUND(TO_NUMBER(sysdate - e.updateTime) * 24 * 60 * 60)-1800),e.equipId from t_equip e;

  begin

  select count(1) into totalNum from t_equip;

  open onlineList;

  for i in 1..totalNum loop

  begin

  fetch onlineList into v_intervalVale,v_equipmentIDValue;

  if v_intervalVale<0 then

  update t_equip e SET e.st_online = '1' where e.equipId = v_equipmentIDValue;

  else

  update t_equip e SET e.st_online = '0' where e.equipId = v_equipmentIDValue;

  end if;

  commit;

  exit when onlineList%notfound;

  end;

  end loop;

  close onlineList;

  end p_online;

相关文章推荐

oracle存储过程入门必备

  • 2012年09月14日 11:37
  • 17KB
  • 下载

Oracle11 存储过程入门实例2012-6-12

  • 2012年06月28日 08:45
  • 222KB
  • 下载

Oracle 存储过程快速入门

1.什么是oracle存储过程 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存...

Oracle存储过程从入门到精通

  • 2013年02月01日 10:35
  • 5.64MB
  • 下载

java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)

Oracle_函数_触发器_游标_存储过程_视图 ---PL/SQL语言部分  --PL.SQL基本格式:    --declare  --声明部分--一切变量和常量在此声明...
  • lulu147
  • lulu147
  • 2013年12月17日 12:53
  • 1452

oracle入门触发器,存储过程基本操作练习

初学oracle,做了个练习,虽然简单,但是为学习oracle开始建立一个感性的认识还是有用的。 数据库中有三张表 srz0119(sno,sname,ssex,sage,sdept), crz...

Oracle存儲過程簡單實例-入門必讀

Oracle存储过程简单实例 /*不带任何参数存储过程(输出系统日期)*/ create or replace procedure output_date is begin dbms_output.p...

oracle 存储过程,游标、异常处理,集合使用入门详解

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集...

Oracle 存储过程创建和执行入门实例

以下emp表是orcl数据库实例自带的表。 执行存储过程前,必须先执行  SET serveroutput ON;  show error; 可以显示具体的执行错误信息。 1.  不带参数 A. ...

oracle存储过程入门教程

oracle存储过程入门教程一.概述  Oracle存储过程开发的要点是:一.概述 Oracle存储过程开发的要点是: 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle存储过程入门
举报原因:
原因补充:

(最多只允许输入30个字)