当前位置:数据库 > Oracle >>

ORACLE数据库中如何调试Type

ORACLE数据库中如何调试Type
 
一般碰到ORACLE有需要调试存储过程参数中有是TYPE、LIST集合的时候,一般调试起来都比较麻烦。 
 
现在用一种比较简单的方式展现下 
 
TYPE代码 
Java代码  
--子TYPE  
CREATE OR REPLACE TYPE RSS_STR_OBJECT_TYPE IS OBJECT  
(  
   str_value varchar2(200)  
);  
grant Execute on rssdata.RSS_STR_OBJECT_TYPE to rssopr;  
grant execute on rssdata.RSS_STR_OBJECT_TYPE to r_rssdata_Exec;  
  
  
--父TYPE代码  
CREATE OR REPLACE TYPE RSS_STR_OBJECT_TYPE_LIST IS TABLE OF rssdata.RSS_STR_OBJECT_TYPE  
  
grant Execute on rssdata.rss_str_object_type_list to rssopr;  
grant execute on rssdata.rss_str_object_type_list to r_rssdata_Exec;  
 
2.简单的存储过程 
Java代码  
PROCEDURE rss_test_type_list_pro(in_rss_str_object_type_list IN rss_str_object_type_list,  
                                 out_retcode                 OUT Varchar2,  
                                 out_message                 OUT Varchar2) IS  
  
  i NUMBER;  
begin  
  
  LOOP  
    
    i := in_rss_str_object_type_list.first;  
    
    INSERT INTO TEST  
      (D)  
    VALUES  
      (in_rss_str_object_type_list(i).str_value);  
    
    EXIT WHEN i = in_rss_str_object_type_list.last;  
    i := in_rss_str_object_type_list.next(i);  
  END LOOP;  
  
EXCEPTION  
  WHEN OTHERS THEN  
    out_retcode := '9';  
    out_message := '[rss_test_type_list_pro]错误信息' || SQLCODE || ',' ||  
                   SUBSTR(SQLERRM, 1, 120);  
END rss_test_type_list_pro;  
 
3. 调试的时候的存储过程匿名块书写 
Java代码  
declare  
  -- 首先初始化这个需要测试的对象  创建一个对象   
  in_rss_str_object_type_list rss_str_object_type_list:= rss_str_object_type_list();  
  -- 再对其中需要测试的一个集合变量m1赋值  
   in_rss_str_object_type_m1 rss_str_object_type := rss_str_object_type('深圳常兴支行');  
begin  
  -- 调用存储过程的时候开始  
  in_rss_str_object_type_list.extend();  
  --将成员m1赋值给集合的最后一个元素  
  in_rss_str_object_type_list(in_rss_str_object_type_list.last) := in_rss_str_object_type_m1;  
    
  rss_test.rss_test_type_list_pro(in_rss_str_object_type_list => in_rss_str_object_type_list,  
                                  out_retcode => :out_retcode,  
                                  out_message => :out_message);  
end;  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,