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

الثلاثاء، 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

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