- 浏览: 326937 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (169)
- ORACLE EBS FORM开发 (39)
- ORACLE EBS业务 (18)
- ORACLE DB (13)
- ACCOUNTING (0)
- 休闲娱乐 (5)
- 开发自己 (1)
- OAF开发 (15)
- LINUX (2)
- ORACLE EBS文档 (1)
- 疑难杂症 (3)
- WEB ADI (2)
- 报表开发 (2)
- EBS有用SQL (8)
- ORACLE EBS开发 (5)
- ORACLE EBS DBA (15)
- EBS日常维护 (24)
- Oracle EBS workflow (2)
- Oracle EBS 个性化 (2)
- EBS常见接口表应用 (10)
- EBS标准API应用 (3)
- Oracle EBS 数据迁移 (2)
- Oracle EBS杂项技术荟萃 (1)
- EBS之事半功倍 (1)
- ORACLE EBS ALERT (1)
- OCP之路 (4)
最新评论
-
594597634:
楼主没有给解决方案啊
!我急求如何解决啊
亲历:JBO-25058 -
sjmei:
嗯,不错,学习了
PL/SQL NO_DATA_FOUND、SQL%NOTFOUND、SQL%ROWCOUNT -
maojieming:
做公交车,应该是“关门打X”
北京公交车一族必备绝技 -
hollysun:
现在功夫都练得炉火纯青了,独孤九剑~
北京公交车一族必备绝技 -
xyh:
还有一招:锁喉功,掐死你,捏死你
北京公交车一族必备绝技
--获取系统记录行数
go_block('T_WARITEMPRT');
last_record;
row_count:=:system.trigger_record; --system.cursor_record
--execute_trigger('POST-CHANGE');
--设置鼠标状态
set_application_property(cursor_style,'BUSY'); 忙碌状态
set_application_property(cursor_style,'DEFAULT'); 正常状态
--设置值列表
SET_ITEM_PROPERTY('top.ORIGINALNO',LOV_NAME,'LOV_MSO');
--下拉列表
n:=populate_group('rec_lb');
populate_list('BLK_BUT.APPTYPE','rec_lb');
:bLK_BUT.APPTYPE:='0';
--批量处理
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);
--取下周一
select trunc(sysdate,'d')+8 from dual;
--设置画布属性
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;
--警报窗口
set_alert_button_property('edit_alert',alert_button1,label,'是(Y)');
set_alert_button_property('edit_alert',alert_button2,label,'否(Y)');
set_alert_property('edit_alert',alert_message_text,'是否修改已确认的配方信息?');
set_alert_property('edit_alert',title,'询问');
I:=show_alert('edit_alert');
if I=alert_button1 then
--设置值列表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;
--
--触发器失效
Forms_Ddl('alter trigger cascade_warprt_qty disable');
alter table t_Prthiswarinv disable all triggers;
alter table t_Prthiswarinv enable all triggers;
alter table T_PURORDER disable all triggers;
alter table T_PURORDER enable all triggers;
--
--注意null与任何值比较皆为空。
select decode(instr(null,'a'),0,0,null,2,1) from dual;
--抛出错误
Raise_Application_Error(-20100,
:New.Prtno ||
'已经登帐的库存事务不能删除,必须进行调错处理!');
--不同用户之间共享数据
--在cpc下
grant select on T_LACKITEM to jh7;
revoke select on T_LACKITEM from jh7;
--在jh7下
create table t_lackitem as select * from cpc.t_lackitem
--在form中创建后台job
DECLARE
Alert_Button NUMBER;
v_Job NUMBER;
BEGIN
Alert_Button := Display_Stop('是否确认结转全部库房?',
:Global.Logon_User);
--是否确认对截至日期内所选定库房的流水进行转移?
IF Alert_Button <> Alert_Button1 THEN
--raise form_trigger_failure;
RETURN;
END IF;
v_Job := 489;
Sys.Dbms_Job.Submit(v_Job,
'cpcfcpgen;',
SYSDATE + 1 / (24 * 60),
'sysdate + 1000');
COMMIT;
Go_Item('t_mo.mono');
Set_Item_Property('GEN_MRP.CONTINUE', Enabled, Property_False);
Message('有限能力计划将在一分钟后开始生成,请耐心等待……');
EXCEPTION
WHEN OTHERS THEN
Display_Note(SQLCODE || SQLERRM, :Global.Logon_User);
END;
--获取查询条件
Tmp_Query01 := Get_Block_Property('T_PK', Last_Query);
--查找某库房、物料最后一条流水
--
create or replace view v_prtio as
Select invtranno,substr(invtranno,1,4)invtran,invstatus,prtno,warno,wardate,qtyonhand,1 columnno
From t_prtio
--
Select invtranno
From (Select invtranno,
prtno,
Sum(columnno) over(Partition By prtno,warno Order By wardate Desc,substr(invtranno,instr(invtranno,'0'))desc,Rowid Desc ) n
From v_prtio)
Where n = 1
--查找流水错误(当前库存数量与台帐不一致)
Select a.prtno,invtranno From (Select invtranno, prtno,warno,qtyonhand From t_prtio Where invtranno In(Select invtranno From (Select invtranno, prtno,Sum(columnno) over(Partition By prtno,warno Order By wardate Desc,substr(invtranno,instr(invtranno,'0'))desc,Rowid Desc ) n From v_prtio Where ((invtran = 'JZRK' And qtyonhand != 0 ) Or (invtran != 'JZRK'))And invstatus != 'B') Where n = 1))a,t_warprt b Where a.prtno = b.prtno And a.warno = b.warno And a.qtyonhand != b.onhandqty;
--用Sql语句实现查找一列中第N大值
--
select * from
(select t.*,dense_rank() over (order by sal) rank from employee)
where rank = N;
--
select * from
(select prtno,dense_rank() over (order by qtyonhand) n,qtyonhand from t_prtio)
Where n = 1
--
--查询2005年全年日期
select to_date('20050101','yyyymmdd')+rownum-1
from all_objects
where rownum <= to_char(to_date('20051231','yyyymmdd'),'ddd');
--
--判断是否可以输入
DECLARE
pl_id ParamList;
v_string varchar2(1000);
v_itemname varchar2(1000);
enter_enabled VARCHAR2(100); --是否可以输入
BEGIN
v_itemname:=:system.current_block||'.'||:system.current_item;
enter_enabled:=get_item_property(v_itemname,ENTERABLE);
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_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);
if enter_enabled='TRUE' then
copy(:global.str,v_itemname);
else
null;
END IF;
Erase(:global.str);
END;
--保持同步
Synchronize;
--更新配套单状态
declare
cursor c_pk is select pkno from t_pk;
begin
for c_1 in c_pk loop
update t_pkitem2 set pkno=pkno where pkno=c_1.pkno
and rownum = 1;
end loop;
end;
--游标变量
declare
type v_cursor is ref cursor;
cur_pknew v_cursor;
begin
if :blk_pk.pkrule=1 then
open cur_pknew for select ……
elsif :blk_pk.pkrule=2 then
open cur_pknew for select ……
end if;
loop
fetch cur_pknew into ……
exit when cur_pknew%notfound;
end loop;
close cur_pknew;
end;
--转移数据
DECLARE
sql_cursor integer;
retu integer;
n_position integer;
n_len integer;
button_value number;
v_where varchar2(1000):= :system.last_query;
BEGIN
set_alert_property('stop_alert',alert_message_text,
'确认把监控记录导入到历史数据库?导出后,当前监控记录将被清空!');
bell;
button_value := show_alert('stop_alert');
IF button_value = alert_button1 then
n_position:= INSTR(v_where,'WHERE');
if n_position > 0 then
v_where := SUBSTR(v_where, n_position);
n_position:= INSTR(v_where,'order');
v_where := SUBSTR(v_where,1, n_position-1);
else
v_where := ' ';
end if;
message('正在导出到历史记录,请稍等...',NO_ACKNOWLEDGE);
sql_cursor := dbms_sql.open_cursor;
dbms_sql.parse(sql_cursor,'insert into t_monitor_his select * from t_monitor '||v_where,1);
retu := dbms_sql.execute(sql_cursor);
dbms_sql.parse(sql_cursor,'delete from t_monitor '||v_where,1);
retu := dbms_sql.execute(sql_cursor);
dbms_sql.close_cursor(sql_cursor);
commit work;
message('保存完毕!',NO_ACKNOWLEDGE);
go_block('t_monitor');
--clear_block;
execute_query;
END IF;
END;
--显示终端用户
select userenv('terminal') from dual;
--更新部门不一致的数据
Update jh7.lean_user a Set a.deptno=(Select
quality.t_user.deptno from quality.t_user Where
quality.t_user.username = a.username)
Where Exists (Select 'a' From quality.t_user Where username = a.username And deptno != nvl(a.deptno,'&'));
--块中项目的控制.
Declare
vItemName t_fundef.funcode%TYPE;
vFunflag varchar2(1);
vBlock varchar2(30);
BEGIN
vBlock := 'BLK_MPS';
vItemName := Get_Block_Property(vBlock,First_item);
WHILE ( vItemName IS NOT NULL ) LOOP
Begin
Select to_char(f_i_value) into vFunFlag From t_Parameter
Where f_name = vItemName;
IF vFunFlag = '0' then
if vItemName = 'MPSFPRMT' then
:BLK_MPS.MPSFPRMT := '0';
elsif vItemName = 'MPSFPRMT1' then
:BLK_MPS.MPSFPRMT1 := '0';
elsif vItemName = 'MPSEOMTN' then
:BLK_MPS.MPSEOMTN := '0';
elsif vItemName = 'SALORMTN' then
:BLK_MPS.SALORMTN := '0';
end if;
END IF;
Exception When NO_DATA_FOUND Then
null;
End;
vItemName := Get_Item_Property(vBlock||'.'||vItemName, NEXTITEM );
END LOOP;
exception
when others then
null;
END;
--example
FUNCTION Stat_Roll(p_Sign VARCHAR2) RETURN NUMBER IS
--月终统计
--vCurrentForm Varchar2(30);
Vblockname VARCHAR2(30);
Vitemname VARCHAR2(30);
v_Sumsign NUMBER := 0;
v_Sumroll NUMBER := 0;
v_Itemvalue VARCHAR2(3);
BEGIN
--vCurrentForm := upper(GET_APPLICATION_PROPERTY(CURRENT_FORM_NAME));
--vBlockName := upper(Get_Form_Property(vCurrentForm,First_Block));
Vblockname := 'T_ROLLBOOK';
--Vitemname := Upper(Get_Block_Property(Vblockname, First_Item));
Vitemname := 'DATE01';
WHILE (Vitemname IS NOT NULL) LOOP
v_Itemvalue := Name_In('T_ROLLBOOK' || '.' || Vitemname);
BEGIN
SELECT Decode(v_Itemvalue, p_Sign, 1, NULL, 0, 0)
INTO v_Sumsign
FROM Dual;
EXCEPTION
WHEN OTHERS THEN
v_Sumroll := 0;
END;
v_Sumroll := v_Sumroll + v_Sumsign;
IF Vitemname = 'DATE31' THEN
EXIT;
END IF;
Vitemname := Get_Item_Property(Vblockname || '.' || Vitemname, Nextitem);
END LOOP;
--vBlockName := Get_Block_Property( vBlockName, NEXTBLOCK );
RETURN v_Sumroll;
END;
--
--获取复选框的值
IF Checkbox_Checked(:SYSTEM.CURRENT_ITEM) THEN
null;
ELSE
NULL;
END IF;
--库存差错
SELECT *
FROM (SELECT Warno, SUM(Onhandqty * Prtlprc) Qty
FROM t_Waritemprt a, t_Prtbasdef b
WHERE a.Prtno = b.Prtno
GROUP BY a.Warno) g,
(SELECT Warno, SUM(Onhandqty * Prtlprc) Qty
FROM t_Warprt a, t_Prtbasdef b
WHERE a.Prtno = b.Prtno
GROUP BY a.Warno) b,
(SELECT Warno, SUM(Onhandqty * Prtlprc) Qty
FROM t_Prthisinvitem a, t_Prtbasdef b
WHERE a.year= 2005 And a.Period = '4' AND a.Prtno = b.Prtno
GROUP BY a.Warno) t
WHERE g.Warno = b.Warno AND g.Warno = t.Warno AND
(g.Qty != b.Qty OR g.Qty != t.Qty);
--查询子项皆为完成而主单仍为正常的申请单
Select appno From t_msi Where appno in(Select Distinct appno From t_msiitem Where appno in(Select appno From (Select appno,Count(Distinct appnoflag) counts From t_msiitem Group By appno) Where counts = 1) And appnoflag = '4') And msiflag = '0'
--动态构造值列表
DECLARE
rg_name VARCHAR2(40) := 'group_VALUE';
rg_id RecordGroup;
lov_id LOV;
errcode NUMBER;
V_Counts number;
BEGIN
/* ** Make sure group doesn't already exist */
rg_id := Find_Group(rg_name);
/* ** If it exist, delete it. */
IF NOT Id_Null(rg_id) THEN
Delete_Group( rg_id );
END IF;
/*create it and add the two ** necessary columns to it. */
--IF :T_ROLEOPERATE.fieldname = 'GLOODGROUP' THEN
SELECT COUNT(*) INTO v_Counts FROM T_listval where flags = :T_ROLEOPERATE.fieldname;
IF V_Counts >= 1 THEN
rg_id := Create_Group_From_Query(rg_name,
'SELECT distinct '||:T_ROLEOPERATE.fieldname||' value ' ||
' from t_hrmuser');
--SET_ITEM_PROPERTY('T_ROLEOPERATE.fieldname',LOV_NAME,'LOV_VALUE');
ELSE
rg_id := Create_Group_From_Query(rg_name,
'SELECT distinct '||:T_ROLEOPERATE.fieldname||' value ' ||
' from t_hrmuser');
--SET_ITEM_PROPERTY('T_ROLEOPERATE.fieldname',LOV_NAME,'');
END IF;
lov_id := Find_LOV('LOV_VALUE');
errcode := Populate_Group( rg_id );
Set_LOV_Property(lov_id,GROUP_NAME,'group_VALUE');
:T_Roleoperate.Value := null;
EXCEPTION WHEN others then
display_note(sqlcode||sqlerrm, :global.logon_user);
END;
--调用的FORM仅允许查询。
CALL_FORM('Hrmmenmtn',no_hide,no_replace,query_only,pl_id);
--赋初始值
Default_Value( '0', ptr_name );
--要找到某月中所有周五的具体日期
select to_char(t.d,'YY-MM-DD') from (
select trunc(sysdate, 'MM')+rownum-1 as d
from dba_objects
where rownum < 32) t
where to_char(t.d, 'MM') = to_char(sysdate, 'MM') --找出当前月份的周五的日期
and trim(to_char(t.d, 'Day')) = '星期五'
--------
03-05-02
03-05-09
03-05-16
03-05-23
03-05-30
如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。
--rownum的用法:
只能用以上符号(<、<=、!=)。
select * from tablename where rownum != 10;返回的是前9条记录。
不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 不成立,查不到记录.
另外,这个方法更快:
select * from (
select rownum r,a from yourtable
where rownum <= 20
order by name )
where r > 10
这样取出第11-20条记录!(先选再排序再选)
要先排序再选则须用select嵌套:内层排序外层选。
rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2!
rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:
1: 假如 判定条件是常量,则:
只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的
即 当出现一个 rownum 不满足条件的时候则 查询结束 this is stop key!
2: 当判定值不是常量的时候
若条件是 = var , 则只有当 var 为1 的时候才满足条件,这个时候不存在 stop key ,必须进行 full scan ,对每个满足其他where条件的数据进行判定
选出一行后才能去选rownum=2的行……
--显示图片 READ_IMAGE_FILE
declare
VHOME VARCHAR2(100);
begin
vhome := :GLOBAL.VHOME;
READ_IMAGE_FILE(vhome||'PICMENU_MOVE.BMP','BMP','BLK_USERMENU_EDIT.IMG_SHOW');
end;
发表评论
-
FRM-40400:事务完成:已应用和保存X条记录"消息框不显示处理方法
2013-01-16 16:28 1502每次成功退出保存修改或添加记录时窗体都会弹出“FRM-4040 ... -
app_fields.set_required_field
2012-07-05 10:12 1219用来设置某个栏位为必录 可以在A的WHEN-VALIDAT ... -
Oracle EBS Form 开发 Tips
2012-07-05 09:49 12056EBS Form开发中经常会遇到一些小问题,以免再次遇到 ... -
form 触发器的层次Before、Override、after的区别
2012-04-10 16:54 1617问题描述:当我们在Form的BLOCK级里面增加了Tri ... -
FND_MESSAGE_PUB.get及error_handler.get_message用法
2012-02-20 20:56 37591. FND_MESSAGE_PUB.get用法,调用标准AP ... -
oracle EBS User Profile使用举例
2012-02-20 20:33 5481Oracle EBS 用户配置文件 ... -
commit_form do_key('commit_form') forms_ddl('commit');
2011-11-24 18:26 16991.commit_form 针对form上面的数据变动进行co ... -
open_form,call_form,new_form 的区别
2011-11-24 18:17 1170(一) open_form是一个受限的封装过程,他可以 ... -
亲历FRM-30425
2011-10-10 10:42 1169FRM-30425: Summarized database ... -
oracleform触发器执行顺序及键定义
2011-09-08 10:57 14521当打开FORM时: (1)PRE-FORM (2 ... -
FRM-30425问题解决
2011-08-01 16:31 2930FRM-30425: Summarized database ... -
EBS中取profile值的用法
2011-05-31 12:33 2186[code]fnd_profile.value的用法: ... -
Form中Block的重新查询
2011-05-31 12:28 1122Form中某些按钮可能调用了Package对表中某些字段进行更 ... -
Oracle EBS Standard Forms 开发规范标准的目的
2011-05-31 12:26 1262两大目标:一、让程序能由人类(human kind)进行维 ... -
调用Form
2011-05-11 11:36 1060(一) open_formopen_form是一个受限的封装过 ... -
范围弹性域
2011-03-24 16:32 1176范围弹性域是使用的键弹性域的一种扩展,其没有专门的弹性注册 ... -
form做好以后,别忘记检查这些
2011-03-24 16:30 11411.常规属性的设置,如模块、数据块、画布、窗口,常规触发器 ... -
使用Form个性化修改标准Form的LOV
2011-03-24 15:24 1404本文结合一个简单的Form做描述,这是没有个性化之前的LOV, ... -
使用Custom.pll修改标准Form的LOV
2011-03-24 15:23 1700在开发过程中,经常碰到需要修改标准Form中LOV的需求,一般 ... -
form开发的小总结
2011-03-22 12:14 1766Form 开发的一些小总结.当然要实现如下的功能不一定要这样做 ...
相关推荐
Oracle Form是Oracle数据库应用开发的重要组成部分,主要用于构建企业级的图形用户界面(GUI)应用程序。Oracle Form Builder是一款强大的工具,它允许开发者通过图形化界面设计、编写和测试Oracle Forms。以下是...
Oracle Form实战总结主要聚焦在使用Oracle Form Builder进行企业级应用开发的经验分享。Oracle Form是Oracle Application Development Framework (ADF)的一部分,常用于构建基于数据库的桌面和Web应用程序,特别是在...
Oracle Form 6i是Oracle公司开发的一款用于构建企业级应用的工具,它是Oracle Forms Services的一部分,主要用于创建和管理基于Web的交互式业务表单。在"Oracle Form 6i Setup(Outside Training).rar"这个压缩包中,...
### Oracle Form 开发基础知识点详解 #### 一、Oracle Form 开发环境搭建 **1. FormBuilder 安装** - **安装路径**:建议遵循企业级共享资源中的指定路径,如`\\sie-file-svr\01_公司级共享资源\06_工具软件\06...
### Oracle Form 6i 培训教程知识点详解 #### 综述 Oracle Form 6i 是一款强大的数据库前端开发工具,它可以帮助开发者快速构建基于表单的应用程序,以实现对数据库的操作,如查询、插入、更新和删除数据等功能。本...
Oracle Form Builder是Oracle Application Development Framework (ADF) 中的一部分,它是一个强大的工具,用于构建基于Web的业务应用程序。这个工具提供了一个图形化的界面,使得开发者能够通过拖放方式创建和设计...
Oracle Form 触发器的执行顺序 Oracle Form 是 Oracle E-Business Suite R12 中的一个功能强大且灵活的开发工具,用于创建复杂的商业应用程序。其中,触发器(Trigger)是一种非常重要的组件,它可以根据不同的事件...
Oracle Form Builder 中使用树的心得 在 Oracle Form Builder 中,树控件是一个非常强大和灵活的控件,它可以用来显示层次结构的数据。以下是 Oracle Form Builder 中使用树的心得: 一、树控件的简介 在 Oracle ...
Oracle Form 开发资料及例子CHM
### Oracle Form 个性化详解 #### 一、Oracle EBS 11.5.10中的Form个性化概述 在Oracle环境中,Form个性化是一项重要的功能,它允许用户根据自己的需求定制应用程序界面,提高工作效率并确保用户体验的一致性。...
### Oracle Form 实战总结知识点详解 #### 一、概述 《Oracle Form 实战总结》文档主要介绍了Oracle Forms的实战经验和技巧,特别强调了如何通过具体的步骤来创建一个客户化的Oracle应用。这对于那些希望深入理解...
Oracle Form上传编译步骤,操作实例
在Oracle E-Business Suite (EBS) 中,Form开发是一个核心部分,用于构建企业级的业务应用程序。在实际应用中,往往需要根据不同用户或部门的需求进行定制化,以提高工作效率和用户体验。"ORACLE ebs FORM开发中form...
### Oracle Form 学习总结及关键技术点解析 #### 一、环境搭建与配置 ##### Lab0: Prepare环境 - **服务器环境**: Linux 操作系统,安装 EBS (Enterprise Business Suite) 11.5.10 版本。 - **工作站环境**: ...
在IT领域,特别是数据库管理与应用开发中,Oracle Form作为一套强大的工具,被广泛用于创建图形用户界面(GUI)的应用程序。它允许开发者利用Oracle数据库的功能来构建复杂且功能丰富的前端应用程序,这些应用程序...
### Oracle EBS Form 开发总结 #### 一、Oracle EBS Forms 概述与Template.fmb Oracle EBS (Enterprise Business Suite) Forms 是一种用于构建企业级应用程序的强大工具。它利用预定义的模板(Template.fmb)作为...
### Oracle Form 自动生成序号 #### 知识点概述 在Oracle Forms中,有时我们需要处理复杂的业务数据,例如处理带有父子结构的数据集时,通常需要在表单中自动生成唯一的序号,以确保每一行记录的独特性和有序性。...
### ORACLE FORMS 培训资料知识点概览 #### Form基本概念 - **什么是Form** - Oracle Forms 是一种应用程序开发工具,主要用于构建与Oracle数据库交互的界面。 - 它提供了一种方法来创建表格形式的界面,用于查询...
根据提供的文件信息,本文将对Oracle Form触发器与系统变量进行深入解析,特别是关于触发器在Oracle Forms中的应用以及如何利用系统变量来增强程序的功能性和灵活性。 ### Oracle Form 触发器 #### 1. 触发器简介 ...
Oracle Forms是Oracle数据库工具套件的一部分,用于构建企业级的图形用户界面(GUI)应用程序,尤其是在数据库交互方面。本文将深入探讨标题和描述中提到的Oracle Forms元素的使用方法。 1. **触发器**:触发器是预...