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