首先得定义一个包,也就是package

  1. create or replace package PKG_SC_STUDY is --创建包头  
  2.   type t_cur is ref cursor;               --定义一个cursor  
  3.  
  4.   --得到敏感词列表  
  5.   procedure listFilterWord (   
  6.                         p_strWhere in varchar2,  
  7.                         p_pageSize in number,  
  8.                         p_pageNow in number,  
  9.                         c_cur out t_cur);  
  10.                           
  11.   --得到敏感词列表总数  
  12. procedure countFilterWord (   
  13.                         p_strWhere in varchar2,  
  14.                         totalCount out number);  
  15.                           
  16.  --根据条件得到相关信息  
  17. procedure getDetail( p_strWhere in varchar2,  
  18.                         c_cur out t_cur);  
  19.                           
  20. --添加敏感词  
  21. procedure addFilterWord ( p_fname in sc_stu_filterword.fname%type,  
  22.                           p_remarks in sc_stu_filterword.remarks%type,  
  23.                           p_adduser in sc_stu_filterword.adduser%type,  
  24.                           p_grade in sc_stu_filterword.grade%type);  
  25.  
  26. --根据id修改信息  
  27. procedure updateFilterWord ( p_id in sc_stu_filterword.id%type,  
  28.                           p_fname in sc_stu_filterword.fname%type,  
  29.                           p_remarks in sc_stu_filterword.remarks%type,  
  30.                           p_grade in sc_stu_filterword.grade%type);  
  31.                             
  32. --根据id启用/禁用敏感词  
  33. procedure enabledFilterWord ( p_id in sc_stu_filterword.id%type,  
  34.                               p_isenable in sc_stu_filterword.isenable%type);  
  35.  
  36. --根据id删除敏感词  
  37. procedure deletedFilterWord ( p_id in sc_stu_filterword.id%type);  
  38.     
  39. end PKG_SC_STUDY; 

 

接着定义一个包体,也就是package bodies

 

  1. create or replace package body PKG_SC_STUDY is 
  2.  
  3.   --得到敏感词详细表列表  
  4. procedure listFilterWord (   
  5.                         p_strWhere in varchar2,  
  6.                         p_pageSize in number,  
  7.                         p_pageNow in number,  
  8.                         c_cur out t_cur) is 
  9.     
  10. v_sql varchar(4000);  
  11. begin 
  12.   v_sql := 'select t.id,t.fname,t.remarks,t.adduser,b.name,t.adddate,t.isenable,t.grade   
  13.     from sc_stu_filterword t,sc_base_users b where t.adduser = b.userid '||p_strWhere;   
  14.  
  15.   v_sql:= 'select * from (select a.*,rownum from ('||v_sql||') a where rownum <='||(p_pageNow*p_pageSize)||')  
  16.     where rownum >'||((p_pageNow-1)*p_pageSize);  
  17.     
  18.   open c_cur for v_sql;  
  19. end listFilterWord;    
  20.     
  21.  
  22. --得到敏感词列表总数  
  23. procedure countFilterWord (   
  24.                         p_strWhere in varchar2,  
  25.                         totalCount out number) is 
  26.     
  27. v_sql varchar(4000);  
  28. begin 
  29.   v_sql := 'select count(t.id) from sc_stu_filterword t,sc_base_users b where t.adduser = b.userid  '||p_strWhere;  
  30.   EXECUTE IMMEDIATE v_sql into totalCount;  
  31. end countFilterWord;   
  32.  
  33. --根据条件得到相关信息  
  34. procedure getDetail( p_strWhere in varchar2,  
  35.                         c_cur out t_cur) is 
  36.     
  37. v_sql varchar(4000);  
  38. begin 
  39.   v_sql := 'select t.id,t.fname,t.remarks,t.adduser,b.name,t.adddate,t.isenable,t.grade   
  40.     from sc_stu_filterword t,sc_base_users b where t.adduser = b.userid '||p_strWhere;  
  41.   open c_cur for v_sql;  
  42. end getDetail;  
  43.  
  44. --添加敏感词  
  45. procedure addFilterWord ( p_fname in sc_stu_filterword.fname%type,  
  46.                           p_remarks in sc_stu_filterword.remarks%type,  
  47.                           p_adduser in sc_stu_filterword.adduser%type,  
  48.                           p_grade in sc_stu_filterword.grade%type) is 
  49. begin 
  50.   insert into sc_stu_filterword (id,fname,remarks,adduser,adddate,grade)   
  51.   values (sc_stu_filterword_seq.nextval,p_fname,p_remarks,p_adduser,sysdate,p_grade);  
  52. end addFilterWord;  
  53.  
  54. --根据id修改信息  
  55. procedure updateFilterWord ( p_id in sc_stu_filterword.id%type,  
  56.                           p_fname in sc_stu_filterword.fname%type,  
  57.                           p_remarks in sc_stu_filterword.remarks%type,  
  58.                           p_grade in sc_stu_filterword.grade%type) is 
  59. begin 
  60.   update sc_stu_filterword t set t.fname = p_fname, t.remarks = p_remarks, t.grade = p_grade where t.id = p_id;  
  61. end updateFilterWord;  
  62.  
  63. --根据id启用/禁用敏感词  
  64. procedure enabledFilterWord ( p_id in sc_stu_filterword.id%type,  
  65.                               p_isenable in sc_stu_filterword.isenable%type) is 
  66. begin 
  67.   update sc_stu_filterword t set t.isenable = p_isenable where t.id = p_id;  
  68. end enabledFilterWord;  
  69.  
  70. --根据id删除敏感词  
  71. procedure deletedFilterWord ( p_id in sc_stu_filterword.id%type) is 
  72. begin 
  73.   delete from sc_stu_filterword t where t.id = p_id;  
  74. end deletedFilterWord;  
  75.  
  76. end PKG_SC_STUDY;  

package跟package bodies 里面的方法要一一对应,连参数也一样,否则就会报错。

至于方法内部的方法,跟sql语句的写法一样。