oracle存储过程调试
1、首先是编写存储过程,编译无误;
2、添加debug信息。为了能够单步跟踪存储过程,需要为其所在的包添加debug信息,右键点击需要调试的存储过程名称,在弹出菜单中选中[add debug information],这样就为包体添加了调试信息;
3、选择需要调试的存储过程名称,点击右键,在弹出菜单中 选择[Test],进去测试窗口,测试窗口中有为了测试该存储过程自动所产生的代码,当然你也可以自己另外加入和修改代码,自动生成的代码已经足够了。
‘贰’ 如何运行和调试Oracle存储过程
1. 编写Oracle存储过程脚步如下:CREATE OR REPLACE PROCEDURE P_AUTO_CREATE_PARTITION (Result Out int, LogErrDesc Out varchar2 ) is type TypeTable is table of varchar2(20); CreatePartitionErr exception; days TypeTable; BEGIN Result := 0; SELECT DATETIME bulk collect into days FROM ( SELECT TO_CHAR(TRUNC(SYSDATE-2,'dd'),'YYYYMMDD') AS DATETIME FROM DUAL UNION SELECT TO_CHAR(TRUNC(SYSDATE-1,'dd'),'YYYYMMDD') AS DATETIME FROM DUAL UNION SELECT TO_CHAR(TRUNC(SYSDATE,'dd'),'YYYYMMDD') AS DATETIME FROM DUAL UNION SELECT TO_CHAR(TRUNC(SYSDATE+1,'dd'),'YYYYMMDD') AS DATETIME FROM DUAL UNION SELECT TO_CHAR(TRUNC(SYSDATE+2,'dd'),'YYYYMMDD') AS DATETIME FROM DUAL ); for i in 1..days.count loop if bruce_partiton.CreatePartitions('T_CDT_1X_BASIC_Partion',days(i))<0 then raise CreatePartitionErr; end if; end loop; --名字写错了bruce_partiton,应该为bruce_partition commit; --异常处理 EXCEPTION WHEN CreatePartitionErr THEN rollback; Result := -1; LogErrDesc := SQLERRM; commit; RETURN; WHEN OTHERS THEN rollback; Result := -2; LogErrDesc := 'CDM_CTCALLTRACEINFO_PRC_NEW Fail!'||substr(dbms_utility.format_error_stack,1,200); commit; RETURN; END P_AUTO_CREATE_PARTITION; / 2. 调试 在PL/SQL中选择存储过程,右键TEST, ADD DEBUGINFO,3. 运行,在Program Window中
‘叁’ oracle存储过程怎么单步调试
PL/SQL中为我们提供了调试存储过程的功能,可以帮助你完成存储过程的预编译与测试
‘肆’ oracle 怎么调用存储过程
ORACLE存储过程 以oracle自带例子数据库的表举例
1、
create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
创建了存储过程不代表运行了存储过程;
运行此存储过程 :
方式一 exec p;
方式二
begin
p;
end;
2、带参数的存储过程
in 相当于程序里的参数,供传入用,在存储过程不能改变其值;
out 相当于程序里的返回值,在存储过程中可以为其赋值传出;
in out 既可以当参数又可以当返回值用;
不带上述说明符默认为in类型;
下例中v_a v_b 为in类型
v_c 为out类型
v_d 为in out 类型
create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;
---> 调试时:
可以在命令窗口调试,出错时 用show errors 显示出错信息;
可以在plDv中调试;
---> 运行时:
可以在命令窗口运行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中调试;
‘伍’ Oracle存储过程的调试文件后缀是
后缀名(.tst)
‘陆’ oracle 使用断点调试函数时如何进入被调用的存储过程
首先向你推荐工具:PL/SQLDeveloper。通过这个工具登录数据库后,找到你要调试的存储过程,右键单击,选择‘test’选项,然后就会出现如图所示的调试界面。
点击图标1,进入存储过程调试的阶段,注意:如果存储过程需要入参,那么需要在点1图标之前输入入参,入参的输入在打开的test窗口的下方。
单击图标2所示的绿色箭头,存储过程进入代码中。
之后的图标可以用来控制调试的步骤。图标3表示单步进入调试,在遇到存储过程中有嵌套调用时,这个图标表示进入被调用的过程中;图标4表示在当前的过程中单步调试,如果遇到嵌套调用的过程,不进入被调用的代码中;图标5表示跳出当前的存储过程,即将当前过程的代码全部执行,跳回到调用这个存储过程的代码中;图标6表示直接调转到下一处发生异常的代码中。
除了以上介绍的这些,为了能便于找出调试过程中的错误,还可以为调试的代码打上断点,加上断点后,直接通过图标2,过程就会执行至断点处停止,停止后,可根据实际情况再进行合适的处理。在调试过程中,可以随时查看过程中定义的变量的赋值的变化,直接将光标停留在变量代码上,界面就会显示相应的值,也可以在下方的Variable窗口中输入变量名,在Value中就会显示对应当前变量的值。
以上,希望对你有用。
‘柒’ toad for oracle 中如何调试存储过程
在toad的左边窗口中找到存储过程标签,选中存储过程,然后右键--execute procere。
会弹出窗口,输入参数,就可以调试存储过程的。
‘捌’ 调试oracle存储过程,如何查看返回的值
用plsql调试直接右键点击-test就可以进入测试
‘玖’ 如何oracle调试存储过程
1.打开PL/SQL Developer 如果在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面 输入用户名,密码和host名字,这个跟在程序中web.config中配置的完全相同,点击确定 找到需要调试的存储过程所在的包(Package bodies),如PACK_ACTIVITY,点击右键,在弹出菜单中选择[查看],得到包中的所有存储过程和他们的代码. 2.添加debug信息 为了能够单步跟踪存储过程,需要为其所在的包添加debug信息,右键点击需要调试的包,在弹出菜单中选中[添加调试信息]. 这样就为包体添加了调试信息。 3.调试存储过程 现在所有的准备工作都做好了,可以调试跟踪存储过程了。 选择需要调试的存储过程,点击右键,在弹出菜单中选择[测试],进去测试窗口. 测试窗口中有为了测试该存储过程自动所产生的代码,当然你也可以自己另外加入和修改代码,对于我们目前只是为了调试存储过程,自动生成的代码已经足够了。接着按照如下的步骤进行调试。 (1)添加存储过程所需要的参数,我们项目中的大多数存储过程都是需要参数的,参数可以在测试窗口右下部分输入。 如:GetPanNO_New需要一个输入参数v_employeeid,我们输入180,输出参数是mycursor,是查看结果的,不需要输入任何值。 (2)开始调试,点击[调试]菜单-[开始](或者按F9),就进去调试模式了,程序开始停在begin这一行. (3)以后的调试过程跟我们熟悉的的调试过程就一样了: 运行(Ctrl+R) 单步进入(Ctrl+N) 单步跳过(Ctrl+O) 单步退出(Ctrl+T) 或者点击debug工具条上的按扭: 当按Ctrl+N进去存储过程的源代码中后 在这个窗口中可以查看过程中的变量值和堆栈。 (4)调试运行完了后,可以查看结果如下(点击mycursor变量旁边的按钮).
‘拾’ oracle存储过程调试 会不会 影响数据库
如果过程里有更新语句,在提交之前,是可能会影响其它会话更新的