إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

اريد عمل كود لأغجراء نفس العمليات لكل حقل بواسطة Loop


2 رد (ردود) على هذا الموضوع

#1 computic_147_11

computic_147_11

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 01 December 2008 - 02:31 PM

ارجو من ذوي الخبره مساعدتي في كتابة الكود التالي إذا كان ذلك ممكن
نفترض أن لدينا جدول اسمه tab ويحتوي على حقول تسمياتها كما يلي
c_1 , c_2 , c_3 , c_4
وهذه الحقول تحتوي على بيانات رقمية أريد اجراء نفس العمليات لكل حقل على حده وقمت بكتابة كود لكن لم أستطع الحصول على هذه القيم بواسطة loop والكود الذي كتبته كالتالي
declare
cursor c1 is select * from tab; m varchar2(30);
begin for i in c1 loop
for j in 1..4 loop
m:='i.c_'||j;
dbms_output.put_line(m);
end loop;
end loop;
end;

هذا الكود لا يعطيني القيمة المخزنة داخل الحفول وهذا ما أريده
أرجوا مساعدتي في إيجاد قيم الحقول داخل اللوب .

#2 khaledmega

khaledmega

    عضو مميز

  • الأعضــاء
  • 838 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 01 December 2008 - 10:29 PM

M := J.C_1 ;
dbms_output.put_line(m);


من أهـم مواضــيعي :



نفسك تسطب اوراكل 10g وبالصور وتربط بين الداتابيز والديفولبر ؟


للأستفسار عن أى شيء يخص الأوراكل أبس أو اوراكل ديفولبر راسلنى على

e
ng-mega@hotmail.com

 

Oracle Apps Techno-Functional Consultant


Oracle Developer & Instructor

 

Instructor At Next Academy

 

محاضر معتمد لدي نكست أكاديمي

OCA - OCP

م / خالد الشاذلي


#3 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 02 December 2008 - 07:11 PM

نفرض أن لدينا الجدول التالي :
CREATE TABLE TBL
(
  C_1  NUMBER(10),
  C_2  NUMBER(10),
  C_3  NUMBER(10),
  C_4  NUMBER(10)
)
/
INSERT INTO TBL VALUES(1,2,3,4);
INSERT INTO TBL VALUES(5,6,7,8);
INSERT INTO TBL VALUES(9,10,11,12);
COMMIT;

الأخ الكريم ، أنا حاولت من قبل أستخدم هذا الكود :
declare
  cursor c1 is select * from TBL; 
  m varchar2(30);
begin 
  for i in c1 loop
	for j in 1..4 loop
	  m := i.c_& j;
	  dbms_output.put_line(m);
	end loop;
  end loop;
end; 
/

ولكن تطالبنا بقيمة واحدة ، وللأسف لم أعلم طريقة الحل المباشر ، فياريت لو أحد يعلم حل هذه المشكلة بحيث أن تتكيف مع قيمة المتغير J يجعل هذا في موازين حسناتة.

عموماً أنا لدي حل مبدئي ، فليس من المعقول أن نتقيد بشيء !!!

أنظر الي الكود التالي كاملاً :


CREATE TABLE TBL
(
  C_1  NUMBER(10),
  C_2  NUMBER(10),
  C_3  NUMBER(10),
  C_4  NUMBER(10)
)
/
INSERT INTO TBL VALUES(1,2,3,4);
INSERT INTO TBL VALUES(5,6,7,8);
INSERT INTO TBL VALUES(9,10,11,12);
COMMIT;

SET SERVEROUTPUT ON
DECLARE
  CURSOR C1 IS SELECT ROWID FROM TBL;
  M VARCHAR2(30);
  FUNCTION GET_VALUE(IN_SQL VARCHAR2) RETURN NUMBER
  AS
	ID_RETURN  NUMBER(20,3);
  BEGIN
	EXECUTE IMMEDIATE IN_SQL INTO ID_RETURN;
	RETURN ID_RETURN;
  EXCEPTION
	WHEN OTHERS THEN
	  RETURN '';
  END;
BEGIN
  FOR I IN C1 LOOP
	FOR J IN 1..4 LOOP
	  DBMS_OUTPUT.PUT_LINE(GET_VALUE('SELECT C_' || TRIM(J) || ' FROM TBL WHERE ROWID = ' || CHR(39) || I.ROWID || CHR(39)));
	END LOOP;
  END LOOP;
END;
/

فأعتقد أن هذا حل مبدئي !!!!!!



ملحوظة ، منتظرين الرد




بالتوفيق للجميع

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )