当前位置:首页 » 存储配置 » oracle存储过程日期参数

oracle存储过程日期参数

发布时间: 2025-08-12 02:26:44

‘壹’ oracle中如何得到执行存储过程的开始和结束时间

需要在存储过程中定义的时候把开始执行时间和结束时间打印出来。

举例如下:

创建存储过程:

sql">createorreplaceprocerep_test
as
v_begintimevarchar2(20);
v_endtimevarchar2(20);
v_strvarchar2(10);
begin
v_begintime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
select'badkano'intov_strfromal;
v_endtime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
dbms_output.put_line('开始时间为:'||v_begintime);
dbms_output.put_line('结束时间为:'||v_endtime);
end;
end;

执行存储过程:

begin
p_test;
end;

执行结果:

说明:由于样例存储过程过于简单,但在进行过多数据处理的时候,看到的结果会比较明显。

‘贰’ Oracle存储过程的参数中带入日期条件,如条件中有'YYYY-MM-DD'

双引号? 还是两个单引号?
to_date(''2013/7/2'', ''yyyy-mm-dd'')

‘叁’ oracle中怎么用存储过程将的存储过程的执行时间返回出去。

可以在日志表中加一个运行时间字段,可以在程序运行之前设定一定变量值为sysdate,程序运行结尾出一个变量2 sysdate , 两个变量相减就可以得到过程运行时间.

begin
v_date1:= sysdate;
...
v_date2:=sysdate;
v_run_num=v_date2-v_dat1;

insert into 日志表(run_num_time) values(v_run_num);
commit;

‘肆’ oracle procere存储过程

OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS变量1 INTEGER :=0;变量2 DATE;BEGIN.END 存储过程名字2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do SometingEND IF;4、while循环
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、变量赋值
V_TEST := 123; 6、用for in使用cursor(游标)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select.into.给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。WHEN OTHERS THEN 表示是其它异常。RAISE表示抛出异常,让User可以看到。*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存储过程

‘伍’ 可否帮我举一个oracle的存储过程 并且要带输入输出参数 还有如何调用的语句

reate or replace procere get_content_river(cxrq in varchar2,--查询日期
fsr in varchar2,--发送人自动发送写自动发送
content out varchar2,
bz out varchar2,--0为失败1为成功
msg out varchar2) is
v_zm varchar2(50);
v_xzqy varchar2(20);
v_xzbm varchar2(20);
n_jjsw number(10,3);
n_bzsw number(10,3);
v_type varchar2(2);
cursor cur_st_river_r(cxsj varchar2)is
select *
from st_river_r
where substr(to_char(st_river_r.ymdhm,'yyyy-mm-dd'),1,10) = cxsj;
rec_st_river_r st_river_r%rowtype;
begin
msg:='';
content:='';
bz := '1';
v_type := '1';--默认为人工
open cur_st_river_r(cxrq);
loop
fetch cur_st_river_r into rec_st_river_r;
exit when cur_st_river_r%notfound;
--取得警戒水位\保证水位
begin
select cshct.alwtlv,cshct.gnwtlv into n_jjsw,n_bzsw from CSHCT where cshct.ennmcd = rec_st_river_r.ennmcd;
exception
when others then
n_jjsw :=0;
n_bzsw :=0;
end;
--判断
if n_jjsw <= rec_st_river_r.zr then
--取得站名
begin
select prnmsr.ennm into v_zm from prnmsr where prnmsr.ennmcd = rec_st_river_r.ennmcd;
exception
when others then
v_zm :='无';
end;
--行政区域编码
begin
select DSEN.DSCD into v_xzbm from dsen where dsen.ennmcd = rec_st_river_r.ennmcd;
exception
when others then
v_xzbm :='无';
end;
--取得行政区域名称
begin
select DSCDNM.DSNM into v_xzqy from dscdnm where dscdnm.dscd = v_xzbm;
exception
when others then
v_xzqy := '无';
end;
content:= content||'报警站名称:'||v_zm||';'||'行政区名称:'||v_xzqy||';'||'当前水位:'||to_char(rec_st_river_r.zr)||';'
||'警戒水位:'||n_jjsw||';'||'保证水位:'||n_bzsw||';';

end if;
end loop;
if fsr = '自动发送' then
v_type := '2';
end if;
if length(content)> 0 then
--插入短信记录表 message
insert into message(
ID,
CONTENT,
SENDDATE,
REPLY,
PERSON,
TYPE,
CONTENTTYPE)
values
(
seq_message.nextval,
content,
sysdate,
'2',
fsr,
v_type,
'2'
);
end if;
close cur_st_river_r;
exception
when others then
if cur_st_river_r%isopen then
close cur_st_river_r;
bz := 0;
end if;
content := '-1';
msg := SQLERRM;

‘陆’ oracle 存储过程 输出一个日期 如果周六 print1 否则 print0

create or replace PROCEDURE p_week
(v_date in varchar2)
as
v_int varchar2(1);
begin
select to_char(to_date(v_date,'yyyy-mm-dd'),'d') into v_int from al;
if v_int=7
then
dbms_output.put_line(1);
else
dbms_output.put_line(0);
end if;
end;

输入日期格式必须是2013-05-09 这样格式的

‘柒’ 各位高手请问oracle 存储过程里时间为"23-JUN-11"如何转换为标准日期格式"YYYY-MM-DD" 谢谢了

跟你的系统时间格式也有关系,不知道你要在哪里改这个格式,如果这个是日期格式的话,可以这样改成字符串格式:to_char(日期字段, 'yyyy-mm-dd'),如果需要输出日期格式就再加一层:to_date(to_char(日期字段, 'yyyy-mm-dd'), 'yyyy-mm-dd')

热点内容
提高存储量 发布:2025-08-12 04:48:28 浏览:303
安卓手机自动更新在哪里关 发布:2025-08-12 04:47:11 浏览:434
颍上编程课 发布:2025-08-12 04:32:45 浏览:854
信号量源码 发布:2025-08-12 04:17:08 浏览:114
创维盒子本地配置怎么下载应用 发布:2025-08-12 04:17:08 浏览:828
扇贝加密 发布:2025-08-12 04:16:28 浏览:697
c语言双向链表 发布:2025-08-12 04:00:52 浏览:573
python黄金 发布:2025-08-12 03:47:50 浏览:431
编译文件如何反复 发布:2025-08-12 03:47:17 浏览:819
wog二追脚本 发布:2025-08-12 03:39:23 浏览:667