الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Execute Immediate

Featured Replies

بتاريخ:

سلام عليكم

يا ريت لو فى توضيح لوظيفه الفانكشن

EXECUTE IMMEDIATE

عشاان مش وصلالى اد كده

شكرا مقدما . ^_^

بتاريخ:

يمكنك استخدامها لتنفيذ أوامر sql بشكل ديناميكى بخيارات عديدة
مثﻻ

declare
 v_1 varchar2(30);
begin execute immediate 'select last_name from employees where employee_id = 100' into v_1; dbms_output.put_line(v_1);
end


و

declare
 v_1 varchar2(30);
 v_2 number(4) := 100;
begin execute immediate 'select last_name from employees where employee_id = :1' Into v_1 using v_2; 
 dbms_output.put_line(v_1);
end;



كما فى المثالين السابقين يتم استخدام into لوضع متغيرات للاحتفاظ بالقيم المعادة من الجملة المنفذة فالناتج يتم تخزينه فى v_1
أما using فتستخدم كما فى المثال السابق لتقييم الـ <1:> bind Arguments فعند التنفيذ يتم وضع قيمة v_2 بدﻻ من :1

يمكنك استخدام returning into مع جمل dml التى تحتوى على returning فقط
مثال

declare
sql_stmt varchar2(200);
v_empid employees.employee_id%type := 100;
v_sal	number(8, 2);
begin sql_stmt := 'update employees set salary = 28000 where employee_id = :1  RETURNING sal INTO :2'; EXECUTE IMMEDIATE sql_stmt USING v_empid RETURNING INTO v_sal; dbms_output.put_line('New Sal is:' || v_sal);
end;



يمكن استخدام نوع المتغير out مع using ولكنى ﻻ استطيع ان استخدمها الا بشكل واحد هذا مثال عليه
باعتبار وجود هذه الدالة

CREATE OR REPLACE FUNCTION CallFunc(p1 IN VARCHAR2)
  RETURN VARCHAR2 AS BEGIN DBMS_OUTPUT.PUT_LINE('CallFunc called with ' || p1);
  RETURN p1;
END CallFunc;


DECLARE
v_Result VARCHAR2(50);
BEGIN EXECUTE IMMEDIATE
     'CALL CallFunc(''any text to be printed out'') INTO :v_Result' USING OUT v_Result;
    dbms_output.put_line(v_result);
END
بتاريخ:

شكرا لك على المعلومه
زادك الله علما وفضلا

بتاريخ:

السلام عليكم.. شكرا للاخوان لاثارة وتوضيح هذه الخاصية بس انا كان عندي سوأل وهو هل يمكن استخام هذه الخاصية ( EXECUTE IMMEDIATE) من اجل عمل استعلام من جداول متغيرة ؟ اي يكون اسم الجدول هو الذي يتغير. انا احاول استخام اوراكل APEX من اجل بناء تقرير وفورمة واحدة لعدد من الجداول وصار لي كم يوم بحاول اضبط هذه الخاصية فلو ممكن توضيح ما هي الصعوبة في جعل اسم الجول هو المتغير ؟

بتاريخ:

اخ عبود ﻻيوجد صعوبة المشكلة انه ﻻ يمكنك الا استقبال row واحد فقط ولو اردت استقبال اكثر من row فعيك باستخدام الـ cursor فهذه وظيفتها ودع execute immediate لتنفيذ DDL - DCL

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.