MMA بتاريخ: 19 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 19 سبتمبر 2006 بسم الله الرحمن الرحيمأصدقائي أعضاء المنتدي الكرام /كل عام وأنتم بخير بمناسبة حلول شهر رمضان الكريمفي الحقيقة أنا عندي مشكلة قد طرحتها في هذا المنتدي من قبل ولم أحديستجيب لي ، حيث إنها المشاركة الثانية بالنسبة لي :السؤال هو ؟كيف يتم تعريف متغير داخل PL/SQL أو Parameter من نوع كائن Object ،أنظر الكود التالي:-----------------------------------------------Create Or Replace Function XX(A Table)As X VarChar2(20); Y Table; R View;BeginEnd;-----------------------------------------------هل يمكـن جعل متغير مثل Y من نوع جدول ، أو متغير مثل R من نوع عارضأو ------ الي آخرة داخل أوراكل ، فالكود مستنتج من SQL-Server وغيرصحيح.فإذا كانت الإجابة بنعم ، ما هي الطريقةمع العلم أنني قد سمعت أن SQL-Server له القدرة علي هذا الأمر========== مع الشكر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 19 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 19 سبتمبر 2006 اليك هذة المشاركة السابقة لعلها تفيدك من هنا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 21 سبتمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 21 سبتمبر 2006 أخي Amgad ، تحية طيبة وبعد ،في الحقيقة أنا تعاملت مع مثل هذا الموضوع ، ولكن سؤالي واضح ، ومن المثال التالي يمكن التوضيح أكثر :------------------------------------------------------------------------نفترض أن لدينا جدولين بهما أربعة حقول من نفس النوع ونفس الإسم ، علي النحو التاليEnumber --> رقم الموظفFname --> إسم أولMname --> إسم أوسطLname --> إسم أخيرCreate Or Replace Function Link_Field(TableName Table,ID_Num VarChar2) Return VarChar2As Type m_Record As Record ( ID_Fname VarChar2(20), ID_Mname VarChar2(20), ID_Lname VarChar2(30) ); lenRecord m_Record; o_Name VarChar2(70);Begin Select Fname,Mname,Lname Into lenRecord From TableName Where Enumber = ID_Num; o_Name := lenRecord.ID_Fname || ' ' || lenRecord.ID_Mname || lenRecord.ID_Lname; Reruen o_Name;End XX;/إستدعاء البرنامج :Select LNKF(Emp,Enumber) As Ename From Emp;Select LNKF(EMP_1,Enumber) As Ename From Emp_1;-------------------------------------لاحظ أن هذا الكود غير سليم ، ولكن هو تخيلي لكيفية إقتباس أكثر من جدول داخل Parameters لإحدي الإجراءات أو الأغراض ، وهو أيضاً ما أرغب فية.وشكراُ علي ردك أخي الكريم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 22 سبتمبر 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 سبتمبر 2006 هل السؤال صعب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mbadawy بتاريخ: 29 أكتوبر 2006 تقديم بلاغ مشاركة بتاريخ: 29 أكتوبر 2006 I did not understand you very will,butif you are trying to pass the table name throght a parameter to be used in the from clouseso you are talking about dinamic sql search DBMS_SQL pacakgebutif you are trying to pass a tabe data you souhd create an index by parameter.i hope that helped you. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MuhammadYassein بتاريخ: 28 ديسمبر 2006 تقديم بلاغ مشاركة بتاريخ: 28 ديسمبر 2006 اخي العزيز ..........اذا كان قصدك عمل متغير من نوع جدول .......-----------------------------------------------------------------------------------V_Emp Emp%RowType ;الان يمكن استخدام V_Emp بدلاً من استخدام الجدول نفسهV_Emp.enameV_Emp.salV_Emp.Deptno اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 5 يناير 2007 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 يناير 2007 أخي الكريمأشكرك كثيراً علي الردبالفعل ، هذا الأمر ( V_Emp Emp%RowType ) سيحل لي الكثير من المشاكلولكن أخي الكريم أنظر معي ، المتغير خاص بجدول Emp فقط لا غير ، بمعني أنني سأستخدم هذا المتغير للتعامل معالكائن ( Emp ) ، ولكنني أرغب في متغير يمكن تحميل العديد من الكائنات به مثل :DepEmpPhonePro ------- الي آخرةوأشكرك كثيراً علي هذه المعلومة الجميلةوآسف علي التأخري للرد عليك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 5 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 5 يناير 2007 اليك هذا المثال لعله يفيدك set serveroutput on show errors declare vsex char(1):='&sex'; type emp_rec is record(eno emp.empno %type,ename emp.ename %type,sex emp.sex %type, salary emp.sal %type,hiredate emp.hiredate %type,yearsofservice number(5,2)); type emp_table is table of emp_rec; emp_col emp_table:=emp_table(); cursor c_emp is select empno,ename,sex,sal,hiredate,((sysdate-hiredate)/365) from emp where sex=vsex order by sal desc; cele integer; m integer; temp number(5,2):=0; begin emp_col.extend(4); for rec in c_emp loop emp_col(c_emp %rowcount):=rec; exit when c_emp %rowcount >=4; end loop; cele:=emp_col.first; for i in 1..emp_col.count loop dbms_output.put_line('element ' || cele || ' is number:' || emp_col(cele).eno || ' name:' ||emp_col(cele).ename || ' sex :' || emp_col(cele).sex || ' salary:' || emp_col(cele).salary || ' hiredate:' || emp_col(cele).hiredate || ' years of service:' || emp_col(cele).yearsofservice); cele:= emp_col.next(cele); end loop; cele:=emp_col.first; for j in 1..emp_col.count loop if temp < emp_col(cele).yearsofservice then m:=cele; temp:=emp_col(cele).yearsofservice; end if; cele:= emp_col.next(cele); end loop; cele:=m; emp_col.delete(cele); cele:=emp_col.first; for i in 1..emp_col.count loop dbms_output.put_line('element ' || cele || ' is number:' || emp_col(cele).eno || ' name:' ||emp_col(cele).ename || ' sex :' || emp_col(cele).sex || ' salary:' || emp_col(cele).salary || ' hiredate:' || emp_col(cele).hiredate || ' years of service:' || emp_col(cele).yearsofservice); cele:= emp_col.next(cele); end loop; end; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.