
مقدمه : استفاده از پکیج 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 را فعال کنید:
- از منوی View → DBMS Output را باز کنید.
- روی + کلیک کنید و Active Session را انتخاب کنید.
- سپس کد خود را اجرا کنید تا خروجی در این پنجره نمایش داده شود.
✅ 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
دارید پیشنهاد می کنیم نظرات خود را در کامنتها بنویسید! 🚀
دیدگاهتان را بنویسید