Oracle有参数带返回值的存储过程简单例子
2011-12-09 13:02
399 查看
create or replace procedure caf_trackdiffbyId(
sendid in number,
userid in varchar ,
diffnum in number,
lats in number,
latn in number,
lngw in number,
lnge in number,
minid out number ,
maxid out number
) is
currDate date;
minDate date;
maxDate date;
subMin number;
Cursor baseMinCursor is select * from caf_usertrack where datetime<currDate order by id desc ;
Cursor baseMaxCursor is select * from caf_usertrack where datetime>currDate order by id asc ;
begin
select datetime into currDate from caf_usertrack where id=sendid and userid=userid and
lat >= lats and lat <= latn and lng >= lngw and lng <= lnge ;
begin
if currDate is not null then
begin
minDate := currDate;
maxDate := currDate;
end;
end if;
for sysd in baseMinCursor loop --取得最小的ID值
begin
subMin := round(to_number(minDate-sysd.datetime)*24*60,2);
if subMin <= diffnum then
begin
minDate := sysd.datetime;
end;
else
begin
minid := sysd.id;
dbms_output.put_line('min'||minid);
exit;
end;
end if;
end;
end loop;
for sysd in baseMaxCursor loop --取得最大的ID值
begin
subMin := round(to_number(sysd.datetime-maxDate)*24*60,2);
if subMin <= diffnum then
begin
maxDate := sysd.datetime;
end;
else
begin
maxid := sysd.id;
dbms_output.put_line('maxid'||maxid);
exit;
end;
end if;
end;
end loop;
end;
end caf_trackdiffbyId;
sendid in number,
userid in varchar ,
diffnum in number,
lats in number,
latn in number,
lngw in number,
lnge in number,
minid out number ,
maxid out number
) is
currDate date;
minDate date;
maxDate date;
subMin number;
Cursor baseMinCursor is select * from caf_usertrack where datetime<currDate order by id desc ;
Cursor baseMaxCursor is select * from caf_usertrack where datetime>currDate order by id asc ;
begin
select datetime into currDate from caf_usertrack where id=sendid and userid=userid and
lat >= lats and lat <= latn and lng >= lngw and lng <= lnge ;
begin
if currDate is not null then
begin
minDate := currDate;
maxDate := currDate;
end;
end if;
for sysd in baseMinCursor loop --取得最小的ID值
begin
subMin := round(to_number(minDate-sysd.datetime)*24*60,2);
if subMin <= diffnum then
begin
minDate := sysd.datetime;
end;
else
begin
minid := sysd.id;
dbms_output.put_line('min'||minid);
exit;
end;
end if;
end;
end loop;
for sysd in baseMaxCursor loop --取得最大的ID值
begin
subMin := round(to_number(sysd.datetime-maxDate)*24*60,2);
if subMin <= diffnum then
begin
maxDate := sysd.datetime;
end;
else
begin
maxid := sysd.id;
dbms_output.put_line('maxid'||maxid);
exit;
end;
end if;
end;
end loop;
end;
end caf_trackdiffbyId;
相关文章推荐
- Oracle中的存储过程简单例子
- 传参数无返回值的 java 调oracle的存储过程.(向数据库表中插入数据)
- oracle创建存储过程和函数的简单例子
- Oracle中的存储过程简单例子
- Oracle中的存储过程简单例子
- Oracle中的存储过程简单例子
- 简单搞一下 System.Data.OracleClient调用带blob、clob等大字段类型参数的存储过程!
- Oracle中的存储过程简单例子
- Oracle中的存储过程简单例子
- 在命令窗口下编写Oracle存储过程并执行的简单例子
- C#调用存储过程带输出参数或返回值
- cx_Oracle如何获取存储过程的返回值
- Delphi 调用 Oracle 存储过程并返回数据集的例子.
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
- 编写存储过程,并且使用java代码调用存储过程的简单例子
- C#调用存储过程带输出参数或返回值分类(转)
- [导入]多参数存储过程的简单示例
- C#获取存储过程的 Return返回值和Output输出参数值
- C#调用存储过程简单完整例子
- 带参数存储过程的小例子