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 存储过程 从入门到精通

先编写一个简单的存储过程 create or replace procedure test1 is begin dbms_output.put_line('hhh'); end test1; ...
  • qq_35776392
  • qq_35776392
  • 2017年08月17日 16:58
  • 116

oracle存储过程初学实例

认识存储过程和函数  存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以...
  • qq_37057095
  • qq_37057095
  • 2017年08月04日 11:05
  • 490

一个 Oracle 存储过程编写的入门级例子

  一个 Oracle 存储过程编写的入门级例子    存储过程是在面试中常被问到的程序员必备技能之一。很多朋友被问到时唯唯诺诺,吞吞吐吐,明显自信不足。其实存储过程无外乎就是特定的功能,在特定的层次...
  • defonds
  • defonds
  • 2009年07月13日 16:13
  • 31259

Oracle存储过程入门

以前写过一些存储过程,不过现在都忘记了,前段时间又要处理一些负责的数据,所以...
  • ailot
  • ailot
  • 2014年09月23日 09:54
  • 373

oracle存储过程--入门与调试

oracle存储过程--入门与调试 例子如下: create or replace procedure pro_one(p_one in number, ...
  • lushuaiyin
  • lushuaiyin
  • 2013年07月09日 11:48
  • 1167

ORACLE存储过程实战之一:入门

1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字(    参数1 IN NUMBER,    参数2 IN NUMBER,    参数3 OUT NUMBER) IS...
  • sfdev
  • sfdev
  • 2008年01月12日 15:06
  • 2826

oracle存储过程之入门1

存储过程是 SQL, PL/SQL, Java 语句的组合, 它使你能将执行商业规则的代码从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。是存放在数据库服务器上的SQ...
  • IT_lyd
  • IT_lyd
  • 2017年04月19日 16:21
  • 624

linux shell 调用 oracle 存储过程

if [ $# -ne 1 ] then echo "day" exit -1 fi day=$1 tmpfilename="common.${1}`date +%s`...
  • aalbertini
  • aalbertini
  • 2010年06月09日 16:48
  • 3768

PL/SQL 存储过程入门小例子

1.为什么要有存储过程? 过程是指用于执行特定操作的PL/SQL块。如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程。(类似C函数,Java方法) 2.oracle的存储过程里的传递...
  • dazengq
  • dazengq
  • 2015年06月12日 13:50
  • 3655

Oracle存储过程书写规范和技巧

转自:http://blog.sina.com.cn/s/blog_6f6ea9d90100www3.html ORACLE存储过程编码规范 1.1         变量规范 ...
  • zwhfyy
  • zwhfyy
  • 2016年06月03日 10:23
  • 6843
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle存储过程入门
举报原因:
原因补充:

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