بتاريخ: 19 سبتمبر 200619 سنة comment_78985 بسم الله الرحمن الرحيمأصدقائي أعضاء المنتدي الكرام /كل عام وأنتم بخير بمناسبة حلول شهر رمضان الكريمفي الحقيقة أنا عندي مشكلة قد طرحتها في هذا المنتدي من قبل ولم أحديستجيب لي ، حيث إنها المشاركة الثانية بالنسبة لي :السؤال هو ؟كيف يتم تعريف متغير داخل 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 له القدرة علي هذا الأمر========== مع الشكر تقديم بلاغ
بتاريخ: 21 سبتمبر 200619 سنة كاتب الموضوع comment_79096 أخي 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 لإحدي الإجراءات أو الأغراض ، وهو أيضاً ما أرغب فية.وشكراُ علي ردك أخي الكريم تقديم بلاغ
بتاريخ: 29 أكتوبر 200619 سنة comment_81715 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. تقديم بلاغ
بتاريخ: 28 ديسمبر 200619 سنة comment_88142 اخي العزيز ..........اذا كان قصدك عمل متغير من نوع جدول .......-----------------------------------------------------------------------------------V_Emp Emp%RowType ;الان يمكن استخدام V_Emp بدلاً من استخدام الجدول نفسهV_Emp.enameV_Emp.salV_Emp.Deptno تقديم بلاغ
بتاريخ: 5 يناير 200719 سنة كاتب الموضوع comment_88485 أخي الكريمأشكرك كثيراً علي الردبالفعل ، هذا الأمر ( V_Emp Emp%RowType ) سيحل لي الكثير من المشاكلولكن أخي الكريم أنظر معي ، المتغير خاص بجدول Emp فقط لا غير ، بمعني أنني سأستخدم هذا المتغير للتعامل معالكائن ( Emp ) ، ولكنني أرغب في متغير يمكن تحميل العديد من الكائنات به مثل :DepEmpPhonePro ------- الي آخرةوأشكرك كثيراً علي هذه المعلومة الجميلةوآسف علي التأخري للرد عليك تقديم بلاغ
بتاريخ: 5 يناير 200719 سنة comment_88505 اليك هذا المثال لعله يفيدك 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; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.