oracle如何测试存储,数据库存储过程怎么测试

oracle plsql怎么调试存储过程

1、首先是编写存储过程,编译无误;

10年积累的成都网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有武侯免费网站建设让你可以放心的选择与我们合作。

2、添加debug信息。为了能够单步跟踪存储过程,需要为其所在的包添加debug信息,右键点击需要调试的存储过程名称,在弹出菜单中选中[add debug information],这样就为包体添加了调试信息;

3、选择需要调试的存储过程名称,点击右键,在弹出菜单中 选择[Test],进去测试窗口,测试窗口中有为了测试该存储过程自动所产生的代码,当然你也可以自己另外加入和修改代码,自动生成的代码已经足够了。

如何oracle调试存储过程

PL/SQL中为我们提供了调试存储过程的功能,可以帮助你完成存储过程的预编译与测试。 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要。在右键菜单中选择Add debug information. start debugger(F9)开始我们的测试,Run(Ctrl+R) 随时在varible List中输入我们想查看的变量 其它: Step into(Ctrl+N):单步调试,进入下一步 Step over(Ctrl+O):结束该语句 Step out(Ctrl+T):跳出该过程 Run to next exception:进入下一个断点Breakpoint Toggle Breakpoint设置断点:光标指向一行,Ctrl+B;或鼠标点中该行的行号边缘

oracle测试存储过程传入数组怎么传

这个是我自己写的一个例子,你看看:

在命令窗口执行以下语句,创建自定义类型NESTEDARRAY。

create or replace TYPE NESTEDARRAY IS TABLE OF NUMBER;

在存储过程中使用自定义类型NESTEDARRAY。

PROCEDURE GET_ARR_RESULT(INPUTARRAY IN NESTEDARRAY, AR OUT NESTEDARRAY) IS

BEGIN

AR := NESTEDARRAY();

FOR I IN 1 .. INPUTARRAY.COUNT LOOP

AR.EXTEND;

AR(I) := I|| INPUTARRAY(I);

END LOOP;

END GET_ARR_RESULT;

Java代码:

import java.sql.Connection;

import java.sql.SQLException;

import oracle.jdbc.OracleCallableStatement;

import oracle.jdbc.OracleTypes;

import oracle.sql.ARRAY;

import oracle.sql.ArrayDescriptor;

import oracle.sql.Datum;

/**

* Java获取Oracle存储过程返回自定义类型

* @author lucky star

*

*/

public class OracleTypeResultTest {

/**

* @param args

*/

public static void main(String[] args) {

Connection con = null;

OracleCallableStatement ocs = null;

String sql = "{call test.GET_ARR_RESULT(?,?)}";

try {

con = DBUtil.dbUtil.getConnection();

ocs = (OracleCallableStatement) con.prepareCall(sql);

String[] params = {“10001”,”10003”};

ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor("NESTEDARRAY", con);

ARRAY inputArray = new ARRAY(arrayDesc, con, params);

ocs.setARRAY(1, inputArray);

ocs.registerOutParameter(2,OracleTypes.ARRAY,"NESTEDARRAY");

ocs.execute();

ARRAY array = ocs.getARRAY(2);

Datum[] datum = array.getOracleArray();

for (int i=0;idatum.length;i++) {

System.out.println(datum[i].intValue());

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

if(ocs!=null)ocs.close();

if(con!=null)con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

用VARCHAR2测试,发现存储过程中无法获取到传入的数组的值。

不过,将自定义类型由varchar2改成NVarchar2就成功了。

oracle 测试存储过程 是哪个权限

Oracle规定,在默认的情况下,在调用存储过程用户的角色不起作用,即在执行存储过程时只有Public权限。所以在调用Create table时,会有权限不足的提示。

只需要使用IR Procedure就能很快解决问题啦,把代码修改为如下:

CREATE OR REPLACE PROCEDURE TestProc AUTHID current_user

IS

flag number;

BEGIN

select count(*) into flag from all_tables where table_name='TEMP3';

if (flag=0) then

execute immediate 'create global temporary table TEMP3 on commit preserve rows as select * from BUSI_ECONTRACT';

else

execute immediate 'insert into TEMP3 select * from BUSI_ECONTRACT';

end if;

END ;

执行存储过程,顺利通过。


网站名称:oracle如何测试存储,数据库存储过程怎么测试
网站URL:http://azwzsj.com/article/hssjss.html