ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

آموزش کامل پکیج DBMS_OUTPUT در اوراکل – راهنمای جامع

مقدمه : استفاده از پکیج DBMS_OUTPUT در اوراکل چه کاربردی دارد؟

پکیج DBMS_OUTPUT یکی از مهم‌ترین و پرکاربردترین پکیج‌های PL/SQL در Oracle Database است که برای نمایش پیام‌ها، دیباگ کردن کدهای PL/SQL و بررسی خروجی پردازش‌ها استفاده می‌شود.

در این مقاله آموزش اوراکل، به بررسی ویژگی‌ها، توابع، نحوه استفاده و محدودیت‌های DBMS_OUTPUT همراه با مثال‌های کاربردی می‌پردازیم.

اگر می خواهید در مورد مفاهیم نرمال سازی جداول در اوراکل بیشتر آشنا بشید نوشته زیر را مطالعه کنید:

در این نوشته شما می خوانید

پکیج DBMS_OUTPUT چیست؟

پکیج DBMS_OUTPUT در اوراکل، یک ابزار داخلی برای چاپ پیام‌ها در محیط SQL Developer، SQL*Plus و دیگر ابزارهای مدیریتی اوراکل است.

این پکیج با ذخیره پیام‌ها در یک بافر موقت، امکان مشاهده خروجی پردازش‌های PL/SQL را فراهم می‌کند.

کاربردهای DBMS_OUTPUT

✅ دیباگ کردن کدهای PL/SQL
✅ بررسی مقادیر متغیرها و خروجی‌های پردازشی
✅ نمایش پیام‌ها و لاگ‌های اجرایی
✅ آموزش و یادگیری PL/SQL به‌صورت تعاملی

توابع و پروسیجرهای اصلی در DBMS_OUTPUT

پکیج DBMS_OUTPUT شامل چندین تابع و پروسیجر مهم است که در ادامه بررسی می‌کنیم.

۱. PUT_LINE – چاپ یک خط پیام

برای نمایش پیام در خروجی، از PUT_LINE استفاده می‌شود.
🔹 مثال:

				
					BEGIN
    DBMS_OUTPUT.PUT_LINE('Salam, In Yek Test ast');
END;
/

				
			

خروجی:

				
					Salam, In Yek Test ast  
				
			

۲. PUT – افزودن متن به خروجی بدون ایجاد خط جدید

🔹 مثال:

				
					BEGIN
    DBMS_OUTPUT.PUT('In Yek ');
    DBMS_OUTPUT.PUT('Test ast.');
    DBMS_OUTPUT.PUT_LINE('Payan Payam');
END;
/

				
			

خروجی:

				
					In Yek Test ast. Payan Payam
				
			

۳. NEW_LINE – ایجاد خط خالی در خروجی

🔹 مثال:

				
					BEGIN
    DBMS_OUTPUT.PUT_LINE('Line 1');
    DBMS_OUTPUT.NEW_LINE;
    DBMS_OUTPUT.PUT_LINE('Line 3');
END;
/

				
			

خروجی:

				
					Line 1

Line 3
				
			

۴. ENABLE و DISABLE – فعال یا غیرفعال کردن خروجی

🔹 مثال:

				
					BEGIN
    DBMS_OUTPUT.ENABLE(1000000);  -- Faal Kardan Buffer ta 1 MB
    DBMS_OUTPUT.PUT_LINE('In Yek Payam ast');
    DBMS_OUTPUT.DISABLE;  -- Gheir Faal kardan OutPut
END;
/

				
			

نحوه نمایش خروجی DBMS_OUTPUT در محیط‌های مختلف

🔹 در SQL*Plus و SQLcl:

قبل از اجرای کدهای PL/SQL، دستور زیر را اجرا کنید:

				
					SET SERVEROUTPUT ON;
				
			

🔹 در Oracle SQL Developer:

  • از منوی View → DBMS Output را باز کنید.
  • روی + کلیک کنید و Active Session را انتخاب کنید.
  • کدهای PL/SQL خود را اجرا کنید و خروجی را در پنجره DBMS Output مشاهده کنید.

مثال‌های کاربردی DBMS_OUTPUT در PL/SQL

مثال ۱: نمایش اطلاعات جدول EMPLOYEES با استفاده از DBMS_OUTPUT

				
					DECLARE
    CURSOR c_emp IS SELECT first_name, last_name FROM employees;
    v_first employees.first_name%TYPE;
    v_last employees.last_name%TYPE;
BEGIN
    OPEN c_emp;
    LOOP
        FETCH c_emp INTO v_first, v_last;
        EXIT WHEN c_emp%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Name: ' || v_first || ' ' || v_last);
    END LOOP;
    CLOSE c_emp;
END;
/

				
			

خروجی:

				
					Name: John Doe
Name: Jane Smith
Name: Ali Rezaei
...

				
			

مثال ۲: نمایش مجموع حقوق کارمندان

				
					DECLARE
    v_total_salary NUMBER;
BEGIN
    SELECT SUM(salary) INTO v_total_salary FROM employees;
    DBMS_OUTPUT.PUT_LINE('Sum Hoghoogh Karmandan: ' || v_total_salary);
END;
/

				
			

محدودیت‌های DBMS_OUTPUT

فقط برای اشکال‌زدایی است و مناسب استفاده در برنامه‌های کاربردی نیست.
مقدار بافر محدود به ۲۰۰۰۰ بایت است (البته می‌توان آن را افزایش داد).
خروجی فقط بعد از اتمام اجرای کامل بلوک PL/SQL نمایش داده می‌شود.

سوالات متداول درباره پکیج DBMS_OUTPUT در اوراکل

✅ برای نمایش خروجی در SQL Developer، ابتدا باید DBMS Output را فعال کنید:

  1. از منوی View → DBMS Output را باز کنید.
  2. روی + کلیک کنید و Active Session را انتخاب کنید.
  3. سپس کد خود را اجرا کنید تا خروجی در این پنجره نمایش داده شود.

DBMS_OUTPUT.PUT متن را در همان خط اضافه می‌کند و خط جدید ایجاد نمی‌کند.
DBMS_OUTPUT.PUT_LINE متن را اضافه کرده و یک خط جدید ایجاد می‌کند.

✅ به‌صورت پیش‌فرض، مقدار بافر DBMS_OUTPUT ۲۰۰۰۰ بایت است، اما می‌توان آن را افزایش داد:

BEGIN
DBMS_OUTPUT.ENABLE(1000000); — تنظیم بافر روی ۱ مگابایت
END;

⚠️ اگر مقدار بافر کافی نباشد، ممکن است پیام‌ها به‌طور کامل نمایش داده نشوند.

✅ در Stored Procedure می‌توان از DBMS_OUTPUT استفاده کرد، اما در Triggers خروجی نمایش داده نمی‌شود، زیرا Triggers به‌صورت Implicitly اجرا می‌شوند و خروجی آن‌ها در DBMS_OUTPUT نمایش داده نمی‌شود.

🔹 مثال در یک Stored Procedure:

CREATE OR REPLACE PROCEDURE show_salary IS
v_salary NUMBER;
BEGIN
SELECT SUM(salary) INTO v_salary FROM employees;
DBMS_OUTPUT.PUT_LINE(‘مجموع حقوق: ‘ || v_salary);
END;

🔹 فراخوانی پروسیجر:

BEGIN
show_salary;
END;

نتیجه‌گیری

✅ پکیج DBMS_OUTPUT یکی از ابزارهای مهم دیباگینگ در PL/SQL است.
✅ برای مشاهده خروجی در SQL*Plus، باید SET SERVEROUTPUT ON اجرا شود.
✅ توابع مهم آن شامل PUT_LINE، PUT، NEW_LINE و ENABLE هستند.
✅ این پکیج برای اشکال‌زدایی عالی است اما در برنامه‌های واقعی استفاده نمی‌شود.

با استفاده از این مقالهپ آموزش PL/SQL، شما می‌توانید از پکیج DBMS_OUTPUT به‌صورت بهینه برای دیباگ کردن و بررسی خروجی کدهای PL/SQL در اوراکل استفاده کنید.

اگر شما تجربه‌ای در استفاده از پکیج DBMS_OUTPUT دارید پیشنهاد می کنیم نظرات خود را در کامنت‌ها بنویسید! 🚀

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *