এসকিউএল বিকাশকারীতে একটি ভেরিয়েবলের মান মুদ্রণ করা


104

আমি একটি নির্দিষ্ট ভেরিয়েবলের মান মুদ্রণ করতে চেয়েছিলাম যা একটি অনামী ব্লকের ভিতরে রয়েছে। আমি ওরাকল এসকিউএল বিকাশকারী ব্যবহার করছি। আমি ব্যবহার করার চেষ্টা করেছি dbms_output.put_line। কিন্তু এটা কাজ করছে না। আমি যে কোডটি ব্যবহার করছি তা নীচে প্রদর্শিত হবে।

SET SERVEROUTPUT ON

DECLARE

  CTABLE USER_OBJECTS.OBJECT_NAME%TYPE;
  CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE;
  V_ALL_COLS VARCHAR2(500);

  CURSOR CURSOR_TABLE
    IS
    SELECT OBJECT_NAME 
    FROM USER_OBJECTS 
    WHERE OBJECT_TYPE='TABLE'
    AND OBJECT_NAME LIKE 'tb_prm_%';

  CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2)
    IS
    SELECT COLUMN_NAME
    FROM ALL_TAB_COLS
    WHERE TABLE_NAME = V_TABLE_NAME;

BEGIN

  OPEN CURSOR_TABLE;

  LOOP
    FETCH CURSOR_TABLE INTO CTABLE;
    EXIT WHEN CURSOR_TABLE%NOTFOUND;

    OPEN CURSOR_COLUMNS (CTABLE);

    V_ALL_COLS := NULL;

    LOOP
      FETCH CURSOR_COLUMNS INTO CCOLUMN;
      V_ALL_COLS := V_ALL_COLS || CCOLUMN;
      IF CURSOR_COLUMNS%FOUND THEN
        V_ALL_COLS := V_ALL_COLS || ', ';
      ELSE
        EXIT;
      END IF;
    END LOOP;

    DBMS_OUTPUT.PUT_LINE(V_ALL_COLS);

  END LOOP;
  CLOSE CURSOR_TABLE;

END;

এবং আমি কেবল আউটপুট পাচ্ছি anonymous block completed


আউটপুট প্রোগ্রামের শেষ / সমাপ্তির সময় ফ্লাশ করা হয়, এটি যেভাবে কাজ করে তা চালিয়ে যায়। দৌড়ানোর সময় আপনি প্রদর্শন করতে ফ্লাশ করতে পারবেন না। লগ টেবিল দেখব (স্বশাসিত লেনদেনের) কি ঘটছে যখন একটি প্রোগ্রাম চলছে দেখতে
tbone

বিল্ট ইন ডিবাগারটি কেন ব্যবহার করবেন না এবং আপনার ব্লকটি পদক্ষেপ করুন। এটি সমস্ত ভেরিয়েবলের অবস্থা দেখায়।
উলফ

5
সার্ভারপুট সেট করুন; - আধা কোলন যোগ করুন, সমস্ত নির্বাচন করুন এবং বিকাশকারীদের মধ্যে চালান, আমার জন্য এটির কাজটি
ঠিকঠাক

উত্তর:


208

আপনাকে ডিবিএমএস_আউটপুট চালু করতে হবে। ওরাকল এসকিউএল বিকাশকারী:

  1. ডিবিএমএস আউটপুট উইন্ডোটি দেখান (দেখুন-> ডিবিএমএস আউটপুট)।
  2. Dbms আউটপুট উইন্ডোর শীর্ষে "+" বোতাম টিপুন এবং তারপরে খোলা ডায়ালগটিতে একটি ওপেন ডাটাবেস সংযোগ নির্বাচন করুন।

এসকিউএল * প্লাসে:

 SET SERVEROUTPUT ON

সংস্করণ 1.5.5 এ, ভিউয়ের অধীনে আমার কাছে বিকল্প নেই বলে মনে হচ্ছে। সংযোগ রয়েছে, ফাইল রয়েছে, প্রতিবেদনগুলি ... স্থিতি দণ্ড, সরঞ্জামদণ্ড, রিফ্রেশ, তবে কোনও ডিবিএমএস আউটপুট নেই। পছন্দসই অধীনে প্রচুর স্টাফ, কিন্তু আমি এখনও আউটপুট জন্য বিকল্প দেখতে পাচ্ছি না।
ruffin

4
@ruffin: v1.5.5 এর বয়স 3 বছর। আমি v3.0 ব্যবহার করছি, এবং বর্তমান সংস্করণটি v3.1 বলে মনে হচ্ছে।
ক্লাস লিন্ডব্যাক

/ nods আমরা 1.5.5-এ আটকেছি - আপনার যদি উত্তরটি খুব সহজ হয় তবে আমি তা গ্রহণ করতাম, তবে অন্যথায় এনপিএস করতাম। ধন্যবাদ!
ruffin

আমি প্রথম লাইনে স্কেল ফাইলটিতে "সেট সার্ভারআউটপুট চালু" বিকল্পটি সেট করেছি।
সামিহ এ

তোমাকে অনেক ধন্যবাদ!
অ্যামজিঘ.কাএ

18

আপনি যখন স্পষ্টভাবে DBMS_OUTPUT উইন্ডো ফলকটি চালু করেছেন তখন এসকিউএল বিকাশকারী কেবলমাত্র DBMS_OUTPUT পাঠ্যকে আউটপুট দেবে বলে মনে হয়।

ফলকটি শুরু করতে (মেনু) দেখুন -> ডিবিএমএস_আউটপুট এ যান।

আপনার সংযোগের জন্য আউটপুট সক্ষম করতে গ্রিন প্লাস চিহ্নটিতে ক্লিক করুন এবং তারপরে কোডটি চালান।

সম্পাদনা: আপনি যে পরিমাণ আউটপুট আশা করছেন তা অনুসারে বাফারের আকার নির্ধারণ করতে ভুলবেন না।


6

সবার আগে সার্ভার আউটপুট তৈরি করুন

  1. SET SERVEROUTPUT on তারপর

  2. ডিবিএমএস আউটপুট উইন্ডোতে যান (দেখুন-> ডিবিএমএস আউটপুট)

  3. তারপরে সার্ভারের সাথে সংযোগ স্থাপনের জন্য Ctrl+ টিপুনN


3

এখানে 2 টি বিকল্প রয়েছে:

set serveroutput on format wrapped;

বা

'ভিউ' মেনুটি খুলুন এবং 'ডিবিএমএস আউটপুট' এ ক্লিক করুন। ওয়ার্কশিটের নীচে আপনার একটি ডিবিএমএস আউটপুট উইন্ডো পাওয়া উচিত। তারপরে আপনাকে সংযোগটি যুক্ত করতে হবে (কোনও কারণে এটি স্বয়ংক্রিয়ভাবে করা হয় না)।


1

1) মেনু দেখতে যান।
2) DBMS_OUTPUT মেনু আইটেমটি নির্বাচন করুন।
3) প্রেস Ctrl+ +N নির্বাচন সংযোগ এডিটর।
4) কমান্ডে সেট সার্ভারআউটপুট কার্যকর করুন।
5) তারপরে আপনার পিএল / এসকিউএল স্ক্রিপ্টটি কার্যকর করুন।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


0
DECLARE

  CTABLE USER_OBJECTS.OBJECT_NAME%TYPE;
  CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE;
  V_ALL_COLS VARCHAR2(5000);

  CURSOR CURSOR_TABLE
    IS
    SELECT OBJECT_NAME 
    FROM USER_OBJECTS 
    WHERE OBJECT_TYPE='TABLE'
    AND OBJECT_NAME LIKE 'STG%';

  CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2)
    IS
    SELECT COLUMN_NAME
    FROM ALL_TAB_COLS
    WHERE TABLE_NAME = V_TABLE_NAME;

BEGIN

  OPEN CURSOR_TABLE;
  LOOP
    FETCH CURSOR_TABLE INTO CTABLE;

    OPEN CURSOR_COLUMNS (CTABLE);
    V_ALL_COLS := NULL;
    LOOP

      FETCH CURSOR_COLUMNS INTO CCOLUMN;
      V_ALL_COLS := V_ALL_COLS || CCOLUMN;
      IF CURSOR_COLUMNS%FOUND THEN
        V_ALL_COLS := V_ALL_COLS || ', ';
      ELSE
        EXIT;
      END IF;
    END LOOP;
   close CURSOR_COLUMNS ;
    DBMS_OUTPUT.PUT_LINE(V_ALL_COLS);
    EXIT WHEN CURSOR_TABLE%NOTFOUND;
  END LOOP;`enter code here`
  CLOSE CURSOR_TABLE;

END;

আমি ক্লোজ অফ সেকেন্ড কার্সার যুক্ত করেছি। এটি কাজ করছে এবং আউটপুটও পাচ্ছে ...


-1

মেনুতে দেখুন -> ডিবিএমএস আউটপুট এবং নির্বাচন করুন


-1

ডিবিএমএস আউটপুট উইন্ডোতে যান (দেখুন-> ডিবিএমএস আউটপুট)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.