بحث هذه المدونة الإلكترونية

الخميس، 17 فبراير 2011

كيفيه عمل TREE

اولا دى ال Select اللى تجيب لى ال TREE فى شكل query


select 0,empno,empname, decode(empno,1,'save',2,'exit',null)


from emp

connect by prior empno=mgr

start with mgr is null
 
 
 
هنا فى الفورم
when form instance
اكتب الاتى
 
DECLARe
node_value varchar2(50);
BEGIn
node_value := Ftree.Get_Tree_Node_Property('rec.tree', :SYSTEM.TRIGGER_NODE, Ftree.NODE_VALUE);
go_block('emp');
set_block_property('emp',DEFAULT_WHERE,'empno='
node_value);
execute_query
end ;

الثلاثاء، 28 ديسمبر 2010

مشكله منتشره فى التكرار و حلها

المشكله هى انى لو عندى جدول مثلا بيسجل حركات تنقل موظف من وظيفه لوظيفه و يوجد فى الجدول 2 field
from_date ,  to_date

و عاوز اطبع تقرير يجيب اخر وظيفه للموظف
فالسهل انى بكتب
select * from table where to_date is null

طيب لو الجدول مثلا مفهوش to_date و محتاج تحل المشكله دى تعمل ايه
تكتب الاتى

 select * from table pp
where from_date in
(select  max(p.from_date )
from table  p
where p.person_id = pp.person_id
group by p.person_id)

الخميس، 16 ديسمبر 2010

طريقه تعريف ال cursor

فى اوراكل يوجد طريقتين لتعريف cursor
الطريقه الاولى 

cursor emp_cur is select empno,empname from employee;


 end loop ;

و بداخل loop اقدر اعمل اللى انا عايزه
مثلا insert or update



for rec in emp_cur loop

الثلاثاء، 31 أغسطس 2010

الان ساكتب داله جميع المبرمجين يحتجونها و هى التفقيط فكره الداله هى عباره عن اخذ الرقم و تحويله لرقم نصى
عن طريق
if condition
فى المقال القادم ساكتب الداله


الخميس، 19 أغسطس 2010

function get week number

الان ساكتب مثال ل

function تجيب رقم الاسبوع فى مده معينه المثال مكتوب باوراكل pl/sql

create or replace function week_number until_date in date ,interval_date in date return number is
no_week number
until_date_v1 date
until_date_v2 date
until_date_v3 date
begin
no_week := 1
until_date_v1 := add_months (until_date,-1 )+1
until_date_v2 := add_months(until_date,-2 )+1
until_date_v3 := add_months(until_date,-3 )+1
if (interval_date>=until_date_v1) and (interval_date<="" p="">
select to_char(interval_date,'w') into no_week from dual
no_week := 4 - no_week + 1
end if
if (interval_date>=until_date_v2) and (interval_date<="" p="">
select to_char(interval_date,'w') into no_week from dual
no_week := 8 - no_week + 1
end if
if (interval_date>=until_date_v3) and (interval_date<="" p="">
select to_char(interval_date,'w') into no_week from dual
no_week := 12 - no_week + 1
end if
return(no_week)
end week_number

جمله update معقده

CREATE TABLE test AS
SELECT table_name, CAST('' AS VARCHAR2(30)) AS lower_name
FROM user_tables;
desc test
SELECT *
FROM test
WHERE table_name LIKE '%A%';
SELECT *FROM testWHERE table_name NOT LIKE '%A%';
-- this is not a good thing ...
UPDATE test t SET lower_name = (SELECT DISTINCT LOWER(table_name)
FROM user_tables u
WHERE u.table_name = t.table_name
AND u.table_name LIKE '%A%');
-- look at the number of rows updated
SELECT * FROM test;-- neither is this
UPDATE test t SET lower_name = (
SELECT DISTINCT LOWER(table_name)
FROM user_tables u
WHERE u.table_name = t.table_name
AND u.table_name NOT LIKE '%A%');
SELECT * FROM test; UPDATE testt
SET lower_nam = (SELECT DISTINCT LOWER(table_name)
FROM user_tables u WHERE u.table_name = t.table_name
AND u.table_name LIKE '%A%')WHERE t.table_name LIKE '%A%';
SELECT * FROM test;

الاثنين، 9 أغسطس 2010

هذ المدونه بها جميع الاكواد الهامه فى جميع اكواد البرمجه