oracle 存储过程 :1,CSS_oracle入门:存储过程,1、创建存储过程   create or - phpStudy...

oracle入门:存储过程

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;

-------------------------------------------------------------相关阅读:

Win 2003组策略和安全模板的应用

Javascript 作用域使用说明

Oracle数据库定时Jobs作业的使用方法

精通Windows Server 2008 多元密码策略之PowerShell篇

用PHP制作静态网站的模板框架(四)

Linux Bash程序安装步骤与技巧

Oracle出现奇怪表名的清除方法

用组来保证“Oracle”数据库的安全

详解Oracle数据库磁盘I/O优化

ASP处理XSLT转换XML的实现

纯CSS搞定按钮、链接点击时的虚线

PHP性能优化准备篇图解PEAR安装

css 表单上传文件的“浏览”按钮修改

VBS教程:方法-CopyFolder 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值