بتاريخ: 24 سبتمبر 200817 سنة comment_139632 السلام عليكم ورحمة الله وبركاتة ، صراحتاً أنا أستخدم الأمر Wrap لتشفير أكوادي الخاصة المدرجة بقاعدة البيانات في صورة Procedure, Function, Package, Trigger ، ولكن وجدت أنه لا يقبل عملية التشفير في حالة إنشاء Sub Select كما يلي : CREATE OR REPLACE FUNCTION GET_EMPLOYEE_NAME(IN_EMPLOYEE_ID NUMBER) RETURN VARCHAR2 AS ID_NAME VARCHAR2(100); ID_SEMP_COUNT NUMBER; BEGIN SELECT (EMPLOYEE_FNAME || ' ' || EMPLOYEE_MNAME || ' ' || EMPLOYEE_LNAME) AS EMPLOYEE_NAME, (SELECT COUNT(*) FROM EMPLOYEE E WHERE E.EMPLOYEE_SEMP = EMPLOYEE.EMPLOYEE_ID) AS COUNT_EMPLOYEE INTO ID_NAME,ID_SEMP_COUNT FROM EMPLOYEE WHERE EMPLOYEE_ID = IN_EMPLOYEE_ID; RETURN ID_NAME; END; / السؤال ، كيف يمكنني أن أشفر هذا الـ Function علي حالتة هذا ؟؟؟ وهل يوجد حل آخر ؟؟؟ شكراً تقديم بلاغ
بتاريخ: 24 سبتمبر 200817 سنة comment_139633 استاذي الكريمانا لم اعمل على wrap من قبلولكن بحثت على موقع اوراكل عن هذا الموضوع ووجدت هذا اللينك أتمنى ان يكون كافياhttp://download.oracle.com/docs/cd/B10501_...6624/c_wrap.htm تقديم بلاغ
بتاريخ: 24 سبتمبر 200817 سنة comment_139634 هذا اللينك نتائج البحث عن wrap على موقع اوراكلhttp://search.oracle.com/search/search?tzo...mp;pageHitCount= تقديم بلاغ
بتاريخ: 24 سبتمبر 200817 سنة كاتب الموضوع comment_139635 المشكلة ليست في كيفية إستخدام الـ Wrap ، أنظر : Wrap IName=D:\Code.sql OName=D:\Code ولكن المشكلة في عدم قبول Sub Select لإجراء تشفير للـ Function نفسة !!!!يعني مثلاً : Select Dep_Code,Dep_Name,(Select Count(*) From Emp Where Emp_DepID = Emp.Emp_ID) As Count_Emp From Dep دة غير أنه لا يقبل أي Joins زي مثلاً : From Dep Inner Join Emp On Dep.Dep_ID = Emp.Emp_DepID لا يقبلها في عملية التشفير !!!!لكن لو كان الكود Free خالي من أي جملة Select متشعبة يقبلها علي الفور ، زي مثلاً : Select Emp_Name Into ID_Name From Emp Where Emp_ID = 1 أو مثلاً بدون أي جملة Select هتكون العملية أفضل كما يلي : Create Or Replace Function PSex(In_Sex Number) Return VarChar2 As Begin If(In_Sex = 1)Then Return 'ذكـر'; ElsIf(In_Sex = 2)Then Return 'أنثي'; Else Return ''; End If; End; / فياريت أجد مساعدة لحل هذه المشكلةشكراً تقديم بلاغ
بتاريخ: 24 سبتمبر 200817 سنة comment_139639 تحية طيبة وبعد CREATE OR REPLACE FUNCTION EMP_COUNT(E_ID NUMBER) RETURN NUMBER AS E_COUNT NUMBER; BEGIN SELECT COUNT(*) INTO E_COUNT FROM EMPLOYEE WHERE EMPLOYEE_ID = E_ID; RETURN E_COUNT; END EMP_COUNT; / CREATE OR REPLACE FUNCTION GET_EMPLOYEE_NAME(IN_EMPLOYEE_ID NUMBER) RETURN VARCHAR2 AS ID_NAME VARCHAR2(100); ID_SEMP_COUNT NUMBER; BEGIN SELECT (EMPLOYEE_FNAME || ' ' || EMPLOYEE_MNAME || ' ' || EMPLOYEE_LNAME) AS EMPLOYEE_NAME, EMP_COUNT(IN_EMPLOYEE_ID) AS COUNT_EMPLOYEE INTO ID_NAME,ID_SEMP_COUNT FROM EMPLOYEE WHERE EMPLOYEE_ID = IN_EMPLOYEE_ID; RETURN ID_NAME; END; / تقديم بلاغ
بتاريخ: 24 سبتمبر 200817 سنة كاتب الموضوع comment_139640 أممممممممممممممطب ولو أنا لدي حوالي 50 Function ، وكل غرض يحتوي علي 20 جملة إستعلام بهذا الشكل ، يعني 50 × 20 = 1000 !!!بهذا الشكل سيحدث لخبطة كثيرة بين كل Function !!!يبقي الحل الأفضل هو صناعة Package لكل Function رئيسي !!!يعني لكل Function حزكة خاصة !!!طب دة وعرفنا حلة ، ولو أنني كنت أرغب في حل آخر ... طيب السؤال دلوقتي ، ما هو حل الـ Joins ؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!شكراً أخي الكريم علي ردك الكريم تقديم بلاغ
بتاريخ: 25 سبتمبر 200817 سنة كاتب الموضوع comment_139690 الأخوة الكرام ، أسلوب الـ Relation صحيح وليس خاطيء ، ولكن الأسلوب القديم هو ما يلي : Inner Join: NEW: FROM DEP INNER JOIN EMP ON DEP.DEP_ID = EMP.EMP_DEPID<BR>OLD: FROM DEP,EMP WHERE DEP.DEP_ID = EMP.EMP_DEPID Left Join: NEW: FROM DEP LEFT JOIN EMP ON DEP.DEP_ID = EMP.EMP_DEPID<BR>OLD: FROM DEP,EMP WHERE DEP.DEP_ID = EMP.EMP_DEPID (+) Right Join: NEW: FROM DEP RIGHT JOIN EMP ON DEP.DEP_ID = EMP.EMP_DEPID<BR>OLD: FROM DEP,EMP WHERE DEP.DEP_ID(+) = EMP.EMP_DEPID وللأسف الطريقة القديمة هي الصحيحة والمقبولة مع أمر Wrap !!!!بس المشكلة أنني أستخدمت الكود Join أكثر من مرة ، فياريت لو حد يعلم حل هذه المشكلة ، وإلا سأضطر الي إجراء تعديل علي كل إجرائاتي وأغراضي المدرجة في قاعدة بياناتي ؟؟؟يا جماعة أنا في أمس الحاجة لحل هذه المشكلة ، فهل هناك حل ؟؟؟ ولو كان ليس هناك أي حلول سوي هذا فياريت إخباري بذلك ؟؟؟شكراً تقديم بلاغ
بتاريخ: 26 سبتمبر 200817 سنة كاتب الموضوع comment_139708 أممممممممممممممممن الواضح أنه ليس هناك أي حلول سوي أن أقوم بالتعديل علي أكوادي من جديد !!!شكراً للجميعالسلام عليكم تقديم بلاغ
بتاريخ: 26 سبتمبر 200817 سنة comment_139720 اسف استاذي الكبيرحاولت اني اسال عن موضوع ال wrap ولكن لم يفدني احد تقديم بلاغ
بتاريخ: 26 سبتمبر 200817 سنة comment_139724 آسف على التأخير ولكن يبدو أنه ليس هناك من حل إلا باستخدام ال package تقديم بلاغ
بتاريخ: 26 سبتمبر 200817 سنة كاتب الموضوع comment_139767 الأخوة الكرام ، متشكر جداً علي ردكم الجميل ومساعدتكم لي ،عموماً ليس كل ما يتمناة المرء يجدة ... وطبعاً كل لغة برمجة أو كل Develobar لازم يكون فية نقص أو عيب !!!شكراً جزيلاً تقديم بلاغ
بتاريخ: 3 أكتوبر 200817 سنة كاتب الموضوع comment_140024 الأخوة الكرام عزراً علي فتح هذا الموضوع من جديد ،ولكنني للأسف ظهرت لي مشكلة غريبة ولا أعلم ما سببها ،بإختصار شديد أنا أشتغلت بأمر Wrap فترة يومين ، بس بعد كدة حدث مشكلة جعلت الملف Wrap.exe يرجع لي رسالة غريبة وغير مفهومة ... فقررت أن أعيد تنصيب الأوراكل من جديد ، ولكن للأسف أستمر الملف Wrap.exe علي عرض نفس الخطأ كل مرة ولا أدري ما هو السبب بالضبط !!!عموماً الخطأ مدرج بالصورة المرفقةأتمني مساعدتي لحل هذه المشكلةشكراً تقديم بلاغ
بتاريخ: 3 أكتوبر 200817 سنة كاتب الموضوع comment_140026 الإخوة الكرام أشكركم كل الشكر وآسف علي الإزعاج !!!حيث قد وجدت حل مشكلتي بعد حوالي 10 دقائق من طرحي للموضوع في المنتدي ... رغم أنني أبحث عن سبب المشكلة من أسبوع تقريباً ... لكن قدر الله وما شاء فعلعموماً هو حل المشكلة هو أن يتم تغيير NLS_Lang الي القيمة us ، وللأسف لا أعلم ما السبب في عملية تحويل اللغة الي هذه اللغة ، وذلك كما يلي : C:\> set nls_lang = us C:\> wrap iname=D:\Code.sql oname=D:\Code.plb وهذا هو مسار الشرح :http://www.orafaq.com/forum/t/13610/0/إظاهر أن Wrap له قيود كثيرة !!!!!شكراً مرة أخري ... وآسف جداً جداً علي إزعاجي لحضراتكمخصوصاً الأخ والحبيب هاني hanyfreedom2007 .السلام عليكم تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.