oracle 存储过程 PROCEDURE和 FUNCTION区别:

时间:2022-07-04 14:54:03
//trigger:
create  or replace trigger trig_name ON {table | view } [with encryption]{
  {  
          {
            for | after | INstead of
         }
          
  }

}

after update  or insert or delete ON emd_smar

AH BMP-6207- Add a four-dimensional generic Enrollment & Engagement report test case


procedure:   可以有多个返回值,也可以没有返回值。  out, in


Function:    只能有一个返回值, 可以是一个大对象比如:临时表的数组就是有多条记录。也可以是一个值 比如:VARCHAR2    return


它们的区别。


package:    header:  负责定义 所有的全局变量 和 produrce,Fuction。相等interface
        body:   header的具体实现。

 在存储过程中如果获得值是NULL时用 IF 变量 IS NOT NULL THEN END; 判断
-  -l_excel_template  变量
如果是“ ”空时用  IF l_excel_template =' 'THEN END IF;
如果没有检索到值用  
EXCEPTION
    WHEN NO_DATA_FOUND THEN 判断
否则报错:

自定义类型: type xxx is table of varchar(30);


游标:     。。。 l_cursor  cursor for (select id , name form person); Fetch cursor_name INTO list_of_Variables

游标有4个属性 :%Isopen, %found, %Notfound,(前两个是布尔值) %rowcount(这个是整数值).
从游标得到一行数据使用Fetch 命令。每一次提前数据后,游标都指向结果集的下一行。
fetch cursor_name into variable[,variable,...]
 new_extract_rec new_extract_cur%ROWTYPE;
open new_cursor_name
loop
fetch new_cursor_name into new_extract_cur;
exit when new_cursor_name%NOtfound;
v_body := v_body || rpad(new_extract_cur.brand,15);
end loop;
close new_cursor_name ;

也可以用for实现
For cur_rec 相当于变量 IN cursor_name(游标名称)
loop
循环赋值;
end loop;
exception
when others then
logger.error(c_log_unit, l_msg);
end


get_enrollment_engagement_data方法L_code(600)

,MARKETING SOURCE DESCRIPTION
,RESPONSE SOURCE DESCRIPTION
l_sql := 'SELECT s.bms_code ||'' (''|| s.bms_desc||'')''
    l_sql := 'SELECT s.bms_code || '','' || s.bms_desc

    l_sql          := 'SELECT  s.brs_code||'' (''|| s.brs_desc ||'')''
,,
我们将介绍显式游标(Explicit Cursor)和隐式游标(Implicit Cursor)。显式游标要声明(Declare),在使用前要打开(Open),使用完毕要关闭(Close)。使用隐式游标时,用户无须执行上述步骤,只要简单地编码

SELECT语句并让PL/SQL根据需要处理游标即可。
定义p_analyzed in varchar2 default 'N',
if p_analyzed = 'Y' then
END IF;


declare
     v_id integer,
     v_name varchar(40);
 cursor cursor_tempName is select * from employee where emp_id =3;
 begin
   open cursor_tempName ;
    loop
     fetch cursor_tempName into v_id, v_name;
     exit when cursor_tempName% notfound;
end loop;
close cursor_tempName;
dbms_output.put_line(v_name);
exception
         when no_data_found then
        dbms_output.put_line(NO data!);
end;

For in:        For xxx in 0...9
            frech l_cursor into xxx,xx

Loop: