waleedamin بتاريخ: 13 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 13 سبتمبر 2009 سلام عليكم يا ريت لو فى توضيح لوظيفه الفانكشنEXECUTE IMMEDIATE عشاان مش وصلالى اد كدهشكرا مقدما . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
The Spider بتاريخ: 15 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 15 سبتمبر 2009 يمكنك استخدامها لتنفيذ أوامر 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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
جلال شواقفه بتاريخ: 16 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 16 سبتمبر 2009 شكرا لك على المعلومهزادك الله علما وفضلا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
عبود بتاريخ: 16 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 16 سبتمبر 2009 السلام عليكم.. شكرا للاخوان لاثارة وتوضيح هذه الخاصية بس انا كان عندي سوأل وهو هل يمكن استخام هذه الخاصية ( EXECUTE IMMEDIATE) من اجل عمل استعلام من جداول متغيرة ؟ اي يكون اسم الجدول هو الذي يتغير. انا احاول استخام اوراكل APEX من اجل بناء تقرير وفورمة واحدة لعدد من الجداول وصار لي كم يوم بحاول اضبط هذه الخاصية فلو ممكن توضيح ما هي الصعوبة في جعل اسم الجول هو المتغير ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 16 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 16 سبتمبر 2009 شكرا على المعلومات...يعطيك العافية... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
The Spider بتاريخ: 16 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 16 سبتمبر 2009 اخ عبود ﻻيوجد صعوبة المشكلة انه ﻻ يمكنك الا استقبال row واحد فقط ولو اردت استقبال اكثر من row فعيك باستخدام الـ cursor فهذه وظيفتها ودع execute immediate لتنفيذ DDL - DCL اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.