首页  ·  知识 ·  
Label
      编辑:  图片来源:网络

PL/SQL整理

--获取系统记录行数
   go_block('T_WARITEMPRT');
   last_record;
   row_count:=:system.trigger_record;   --system.cursor_record
--execute_trigger('POST-CHANGE');
--设置鼠标状态
set_application_property(cursor_style,'BUSY');
--raise form_trigger_failure;
--显示错误信息
   exception when others then
    display_note(sqlerrm||sqlcode,:global.logon_user);
--decode
decode(a.freightmode,'0','企业自付','1','供应商付费','2','企业代付','3','供应商代付',null)
decode(qtyonhand - qtyinit,invtranqty,invtranqty,null)
--导出路径
select *   from t_parameter where f_name='LeanERPTempDir';
select f_c_value from t_parameter where f_name ='WebServer1';
--合同附件
select f_c_value   from t_parameter where f_name='purorderaccesspath';
select f_c_value   from t_parameter where f_name='purorderaccessurl';
--设置值列表     
SET_ITEM_PROPERTY('top.ORIGINALNO',LOV_NAME,'LOV_MSO');
LIST_VALUES;
--下拉列表
n:=populate_group('rec_lb');
populate_list('BLK_BUT.APPTYPE','rec_lb');
:bLK_BUT.APPTYPE:='0';
--调用另一模块
DECLARE
    pl_id    ParamList;
    v_string varchar2(1000);
    v_itemname varchar2(1000);
BEGIN
   pl_id := Get_Parameter_List('calendar');
   IF NOT Id_Null(pl_id) THEN
     Destroy_Parameter_List(pl_id);
   END IF;
   pl_id := Create_Parameter_List('calendar');
   v_itemname:=:system.current_block||'.'||:system.current_item;
   v_string:=name_in(v_itemname);
   Add_Parameter(pl_id, 'p_str',TEXT_PARAMETER,v_string);
   Call_Form('input_str',no_hide,no_replace,no_query_only,pl_id);
   copy(:global.str,v_itemname); Erase(:global.str);
END;
--批量处理
   set_application_property(cursor_style,'BUSY');
   SYNCHRONIZE;
   first_record;
   loop
     null;
   exit when :system.last_record = 'TRUE';
   next_record;
   end loop;
   set_application_property(cursor_style,'DEFAULT');
   bell;
   display_note('SRMP035',:global.logon_user);
   --   采购计划关闭完毕!
--对话框
IF display_stop('INV081', :GLOBAL.logon_user) <> alert_button1 THEN
   RETURN;
END IF;
--取得货币名称
begin
   select currencydesc
   into v_currencydesc
   from t_currency
   where currencycode = c1.splymoneyflag;
   exception when others then v_currencydesc := '人民币(元)';
end;
--询问对话框-1
declare
   return_value number;
begin
   set_alert_property('stop_alert',alert_message_text,'确认送审该合同吗?');
   return_value := show_alert('stop_alert');
   if return_value != alert_button1 then
      return;
   end if;
end;
--询问对话框-2

DECLARE
return_value number;  
BEGIN
   return_value := display_stop('mdm011',:global.logon_user);
   IF return_value = ALERT_BUTTON1 THEN
      COMMIT_FORM;
   END IF;
END;   

--取下周一
select trunc(sysdate,'d')+8 from dual;
--message_level
oldmsg := :System.Message_Level;
   IF reldef = 'FALSE' THEN
     Go_Block(detail);
     Check_Package_Failure;
     :System.Message_Level := '10';
     Execute_Query;
     :System.Message_Level := oldmsg;
   ELSE
--取当前年度、期段号
begin
   select year,period
   into v_year,v_period
   from t_accperiod
   where sysdate >= startdate
   and to_char(sysdate,'yyyy/mm/dd')<=to_char(enddate,'yyyy/mm/dd');
exception when others then null;  
end;
--设置画布属性
vCan2:=FIND_VIEW('CAN_PRTNO2');
SET_VIEW_PROPERTY(vCan2,VISIBLE,property_true);
vCan1:=FIND_VIEW('CAN_PRTNO1');
SET_VIEW_PROPERTY(vCan1,VISIBLE,property_false);
--设备提示信息
elsif :top.opsrc = 'X' or :top.opsrc='T' then
    set_item_property('top.tranobj',prompt_text,'客户代码');
else
    set_item_property('top.tranobj',prompt_text,'部门代码');
end if;
--设置值列表KEY-LISTVAL
ELSIF :top.OPSRC='I' THEN   --零星出库
   SET_ITEM_PROPERTY('top.ORIGINALNO',LOV_NAME,'LOV_MSI');
LIST_VALUES;
   IF :top.ORIGINALNO IS NOT NULL THEN
      PRTNO_MSI;
   END IF;
END IF;
--调用值列表show_lov
DECLARE
   a_value_chosen BOOLEAN;
BEGIN
   a_value_chosen := Show_Lov('lov_name');
   IF   a_value_chosen THEN
     set_block_property('t_efficiency',default_where,'username = :control.display_name');
     go_block('t_efficiency');
     execute_query;  
     set_block_property('t_efficiency',default_where,'username in (select username from t_hrmuser where department = :global.user_dept)');
   END IF;
END;
--生成序号
declare
   vlpadnum number;
   maxno varchar2(6);
   cursor cerpcode is select sequence,lpadnum from t_erpcode
   where erpcode='PURAPPNO' and prifix=to_char(sysdate,'yy')||to_char(sysdate,'mm') for update nowait;
begin
   if :t_purapp.appno is null then
     if :SYSTEM.MODE = 'NORMAL' THEN
      begin
       begin
      for c1 in cerpcode loop     
         update t_erpcode set sequence=sequence+1 where erpcode='PURAPPNO' and prifix=to_char(sysdate,'yy')||to_char(sysdate,'mm');
      end loop;
     exception
      when others then
      display_note('SYS071',:global.logon_user);
      raise form_trigger_failure;
     end;
       select sequence,lpadnum into maxno,vlpadnum from t_erpcode where erpcode='PURAPPNO' and prifix=to_char(sysdate,'yy')||to_char(sysdate,'mm');
      exception
       when NO_DATA_FOUND then
            select count(*)+1 into maxno from t_purapp where appno like '%'||to_char(sysdate,'yy')||to_char(sysdate,'mm')||'%';
            --select max()
       vlpadnum:=4;
       insert into t_erpcode(erpcode,prifix,sequence,lpadnum)
       values ('PURAPPNO',to_char(sysdate,'yy')||to_char(sysdate,'mm'),maxno,vlpadnum);
      end;
       :t_purapp.appno := 'Q'||:global.logon_user||to_char(sysdate,'yy')||to_char(sysdate,'mm')||lpad(maxno,vlpadnum,'0');
     end if;
    end if;
end;
--遍历树
select t_prtstrudef.prtno,
         t_prtbasdef.prtdesc,
         t_prtbasdef.mtltmrk,
         t_prtstrudef.prtpqty,
         t_prtbasdef.prtum,
         t_prtstrudef.tranprtno
    from t_prtstrudef,t_prtbasdef
   where t_prtstrudef.prtno = t_prtbasdef.prtno
connect by prior t_prtstrudef.prtno=t_prtstrudef.prntno
   start with t_prtstrudef.prntno=:BLOCK_BUTTON.PRTNO;
   --
/*  

** Built-in:   FORMS_DDL
** Example:    The expression can be a string literal.
*/  
BEGIN
   Forms_DDL('create table temp(n NUMBER)');
   IF NOT Form_Success THEN
     Message ('Table Creation Failed');
   ELSE
     Message ('Table Created');
   END IF;
END;
--物料所属大类判断
and (exists (select ''a'' from t_prtinclass c where c.classid='''||:blk_query.classid||''' and c.prtno=v_totqry.prtno ) or :blk_query.classid is null)
--给值列表赋初值
declare
   cursor v_cur2 is select machtype A ,machtype B from t_gkdept order by machtype;
   N_INDEX NUMBER :=1;
begin
   DELETE_LIST_ELEMENT('T_TPMSCKMTN.MACHTYPE',1);
   for c2 in v_cur2 loop
     Add_List_Element('T_TPMSCKMTN.MACHTYPE',N_INDEX,C2.A,C2.B);
     N_INDEX := N_INDEX + 1;
   end loop;
end;
--
--查询重复数据
select rpno from t_purtrace group by rpno having count(rpno) >18;
--
--生成单据号
PROCEDURE GET_PRTNO is
    v_sysdate       varchar2(12);
    v_Svdictateno   varchar2(24);
    v_DbodNo        varchar2(12);      
    n_count         integer;
    v_count         varchar2(10);
    n_count1        integer;
    n_count2        integer;
    v_count2        varchar2(10);
    n_num           number;
    v_num           varchar2(8);
BEGIN

   v_DbodNo:= 'ZS';
    v_sysdate:=to_char(sysdate,'YYMMDD');
    --获取满足条件的记录数
    select count(*)+1 into n_num
     from bas_prtbasdef
    where prtno like v_DbodNo||v_sysdate||'%';
    v_num := to_char(n_num);
    --填充
    v_count:=lpad(v_num,'5','0');
    --合成为物料号
    v_Svdictateno:=v_DbodNo||v_sysdate||v_count;
    --判断是否存在该号码
    select count(*) into n_count from bas_prtbasdef
    where prtno=v_Svdictateno;
    --不存在
    if n_count=0 then
       --把新物料号赋给参数p_prtno
       :parameter.p_prtno := v_Svdictateno;
    --若存在   
    elsif n_count>0 then
       --递增
       n_count1:=v_count+1;
       loop
          v_count2:=lpad(n_count1,'5','0');      
          v_Svdictateno:=v_DbodNo||v_sysdate||v_count2;
         select count(*) into n_count2 from bas_prtbasdef
          where prtno=v_Svdictateno;
          if n_count2=0 then
             :parameter.p_prtno := v_Svdictateno;
             exit;--退出循环
          end if;
          n_count1:=n_count1+1;
       end loop;
    end if;
   exception when others then
    display_note(sqlerrm||sqlcode,:global.logon_user);
   
END;
--
--当保存记录时控制:同一物料质量编号不能相同。
DECLARE
   row_count   NUMBER;                      --记录行数
   row_num     number;                         --所新建或修改记录行数
   V_PRTLOTNO t_srmchkproject.prtlotno%type; --质量编号
BEGIN      
--获取当前记录行数
row_num := :system.trigger_record;
   first_record;  
   loop
     row_count:=:system.trigger_record;  
     V_PRTLOTNO := :t_srmchkproject.prtlotno;
     GO_RECORD(ROW_COUNT + 1);
     loop
      --若质量编号相同
       if v_prtlotno = :t_srmchkproject.prtlotno then
        display_note('同种物料的质量编号不能相同!请改正。',:global.logon_user);
        go_item('t_srmchkproject.prtlotno');
        return;--返回
        --exit;
       end if;
     exit when :system.last_record = 'TRUE';
     next_record;
     end loop;
     GO_RECORD(ROW_COUNT+1);   --用以最后一行记录判断
   exit when :system.last_record = 'TRUE';
   --返回外层循环记录
   GO_RECORD(ROW_COUNT);
   next_record;
   end loop;
   commit_form;
   --返回当前记录  
   go_record(row_num);
EXCEPTION WHEN OTHERS THEN NULL;  
END;
--
--自动定位树结构的焦点
DECLARE
htree       item;
   find_node       Ftree.NODE;
begin
    htree:= Find_Item('T_BOM1.BOM');
    find_node := FTREE.FIND_TREE_NODE(htree,:T_PRTBASDEF_CREATE.PRTNO,FTREE.FIND_NEXT,FTREE.NODE_VALUE,FTREE.ROOT_NODE,FTREE.ROOT_NODE);
    IF NOT Ftree.ID_NULL(find_node) then    --如果存在对应的节点
    --pause;
    FTREE.SET_TREE_SELECTION(htree, FIND_NODE, FTREE.SELECT_TOGGLE);
    end if;
end;
--
--杀死死进程
select SID, serial#, USERNAME, SCHEMANAME, STATUS, OSUSER, OSUSER,TERMINAL, PROGRAM, LOGON_TIME from v$session;
ALTER SYSTEM KILL SESSION '';
--
select func.DECODEPASSWD(password) from t_user where username = '';
select func.ENCODEPASSWD(password) from t_user where username = '';
--用户权限
(:GLOBAL.LOGON_USER in (select object from t_roleuser where role=MODIFER and flag='0') or MODIFER=:GLOBAL.LOGON_USER)
--
--列表项
DECLARE
   v_n Number;
BEGIN
   v_n := populate_group('rec_ptype');
   populate_list('t_freesb.prntno','rec_ptype');
END;
--提示对话框
set_alert_property('note_alert',alert_message_text,'口令更改成功!');
return_value := show_alert('note_alert');
--
--改变按钮标签文本
DECLARE
v_Count NUMBER;
v_Label VARCHAR2(100);--记录“全选按钮”的标签文本
BEGIN
Go_Block('user_col_comments');
v_Label := Get_Item_Property('Blk_Control.Btn_Select_Col', Label);
First_Record;
IF v_Label = '+' THEN
   LOOP
    /*SELECT COUNT(*)
     INTO v_Count
     FROM t_Fieldrole
     WHERE Table_Name = :User_Col_Comments.Table_Name
       AND Column_Name = :User_Col_Comments.Column_Name
       AND Role = :t_Fieldrole.Role;*/
    --IF v_Count = 0 THEN
     :User_Col_Comments.Chk_Select := 1;
    --END IF;
    EXIT WHEN :System.Last_Record = 'TRUE';
    NEXT_RECORD;
   END LOOP;
   First_Record;
   Set_Item_Property('Blk_Control.Btn_Select_Col', Label,'-');
   Set_Item_Property('Blk_Control.Btn_Select_Col', TOOLTIP_TEXT,'取消选择');
ELSIF v_Label = '-' THEN
   First_Record;
   LOOP
    :User_Col_Comments.Chk_Select := 0;
    EXIT WHEN :System.Last_Record = 'TRUE';
    NEXT_RECORD;   
   END LOOP;
   First_Record;
    Set_Item_Property('Blk_Control.Btn_Select_Col', Label,'+');
    Set_Item_Property('Blk_Control.Btn_Select_Col', TOOLTIP_TEXT,'选取全部');
END IF;
EXCEPTION
WHEN OTHERS THEN
   NULL;
END;
--
 

本文作者:网友 来源:网络http://hi.baidu.com/test100/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的
收藏至微信