بتاريخ: 15 أبريل 200719 سنة comment_97128 السلام عليكم ........................................من ذو فترة و انا مهتم بتزويدكم بأحدث المعلومات خصوصا في الإصدار 10g هنا معلومة جديدة ولا كن لا تعتبر بتلك الأهمية ولا كن حتى نستفيد من المعلومات ونكون أكثر معرفة في هذا الإصدار المعلومة الجديدة هي عن DBMS_OUTPUT.PUT_LINE ومن المعروف انها ليست ميزة جديدة وأنها متاحة في الإصدارات السابقة لعملية الطباعة SET SERVEROUTPUT ON BEGIN DBMS_OUTPUT.PUT_LINE('PRINT ME'); END; لا كن تكمن المشكلة في الإصدارات السابقة حيث لا يمكن طباعة اكثر من 255 بايت لكل من لديه الإصدار 9i يجرب هذا المثال الذي يحاول طباعة أكثر من 255 بايت : SET SEREROUTPUT ON DECLARE v_string VARCHAR2(500 CHAR); BEGIN v_string :='Hello my name is ahmed' ||'Email :[email protected] ' ||'Oracle Call Interface(OCI)' ||'Foreign Functions An OCI foreign function incorporates ' ||'the Oracle Call Interface. This interface allows you to write ' ||'a subprogram that contains calls to Oracle databases . ' ||'A foreign function that incorporates only the OCI ' ||'not the Oracle Precompiler interface) cannot access Forms Developer ' ||'variables and items.'; DBMS_OUTPUT.PUT_LINE(v_string); end; سوف يرجع الخطأ التالي ERROR at line 1:ORA-20000: ORU-10028: line length overflow, limit of 255 chars per lineولقد كان الحل في الإصدارات السابقة هو استخدام الوظيفة SUBSTR كالتالي : SET SEREROUTPUT ON DECLARE v_string VARCHAR2(500 CHAR); BEGIN v_string :='Hello my name is ahmed' ||'Email :[email protected] ' ||'Oracle Call Interface(OCI)' ||'Foreign Functions An OCI foreign function incorporates ' ||'the Oracle Call Interface. This interface allows you to write ' ||'a subprogram that contains calls to Oracle databases . ' ||'A foreign function that incorporates only the OCI ' ||'not the Oracle Precompiler interface) cannot access Forms Developer ' ||'variables and items.'; DBMS_OUTPUT.PUT_LINE(SUBSTR(v_string, 1, 255)); DBMS_OUTPUT.PUT_LINE(SUBSTR(v_string, 256)); end; جرب هذا المثال في الإصدار 10G ستكون النتيجة دون مشاكل .بالنسبة للإصدار 10G فقد تم رفع تقييد البايتات وهذا هو الفرق بين هذا الإصدار و الإصدارات السابقة .عذروني على الإطالة ......................................................................... تقديم بلاغ
بتاريخ: 27 أبريل 200718 سنة comment_98161 أخي الكريمهذا الكلام غير صحيح بالمرة لأن DBMS_OUTPUT.PUT_LINE يمكن أن يأخذ ما تشاء من عدد الحروف فقط يجب عليك وضع العبارة التالية قبل تنفيذ التعليمة :DBMS_OUTPUT.ENABLE ( buffer_size IN INTEGER DEFAULT 20000);راجع الـ DBMS_OUTPUT في ملفات المساعدة .وشكرا تقديم بلاغ
بتاريخ: 27 أبريل 200718 سنة كاتب الموضوع comment_98164 شكرا لردك ياعزيزي اولا: هذا الكلام ليس تأليف من عندي او من خيال وأنما هذه المعلومة من كتاب أطلعت عليه ثانيا: يمكن ما فهمت انت الموضوع المقصود هنا حينما تستخدم DBMS_OUTPUT.PUT_LINE في الأصدار 9i في الوضع الأفتراضي لايمكنك طباعة اكثر من 255 حرف ولم يتعلق الموضوع كما ذكرت انت بأستخدامDBMS_OUTPUT.ENABLE( buffer_size IN INTEGER DEFAULT 20000)بينما في أوراكل 10g يمكن عمل ذلكثالثا: حينما تقول هذا الكلام غير صحيح بالمرة ماعليك سوى التجربة في الأصدارين وسترى الأختلاف اتمنى ان يكون المغزى من الكلام واضح .............. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.