بتاريخ: 24 أبريل 200619 سنة comment_67232 السلام عليكممتى نستعمل ديناميك اس كيو ال وما هي فائدتها وهل الشركات تستخدمها في عمل برامجها ام هناك بديل عتها ؟ تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة comment_67236 اخى العزيز m_dba .. دعنا نتخيل مثال بسيط و سريعتخيل لو عندنا 30 او 40 جدول الأستركشر بتاعهم واحد على سبيل المثالالمحافظات ( كود المحافظة - اسم المحافظة )المناطق ( كود المنطقة - اسم المنطقة ) ....... الختخيل بقى لو ناا عايز ادخل بيانات فى كل جدول من دول ... الطريقة العادية بتقول ... انك تعمل فورمة لكل جدول و تدخل البيانات .. الى مش طبيعى بقى انك تعمل فورمة واحدة و فيها لست ايتم يجبلك اسماء الجداول .. تعالى بقى للنقطة الجامدة ..... ازاى نخلى الفورمة تتعامل مع الجداول كمتغيرات ؟ بمعنى انة مفيش حاجة اسمها Insert into Varibleاى ان جملة السكول ثابتة فى حد زاتها لأنها بتتعامل مع جدول واحد ... طب تخيل بقى دىEXECUTE IMMEDIATE'Insert into ' || List_item1 || ' Values (var1,var2)'اعزرونى ان كان فى غلط سنتكس ولا حاجة لأنى قاعد على مكنقة خنقانى ههههههياريت تكون المعلومة وصلت و لمزيد من التفوقOracle ITself تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة كاتب الموضوع comment_67244 بارك الله فيك يعني ممكن ان استعمل فورمة واحده لادخال بيانات لاكثر من جدول الهم نفس الاستركشر عن طريق زر مثلا في الفورم؟وكمان لانشاء الجداول بنفس الطريقةارجو ان يكون كلامي صحيح. تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة comment_67246 اخى كلاامك مظبوط ... و هو دا استخدام مشهور جدا للدينمك سكولو الله اعلمOracle ITself تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة comment_67278 طلب منى صديق بالمنتدى Hobaa شرح ما معنى دينمك اس كيو ال ... و هذة هى الصيغة العامة للأمر EXECUTE IMMEDIATEEXECUTE IMMEDIATE dynamic_SQL_string[iNTO defined_variable1, defined_variable2, ...][uSING [iN | OUT | IN OUT] bind_argument1, bind_argument2, ...][RETURNING INTO | RETURN bind_argument1, bind_argument2, ...]و لم اجد افضل من هذا المثالDECLARE sql_stmt VARCHAR2(100); plsql_block VARCHAR2(300); v_zip VARCHAR2(5) := '11106'; v_total_students NUMBER; v_new_zip VARCHAR2(5); v_student_id NUMBER := 151;BEGIN -- Create table MY_STUDENT sql_stmt := 'CREATE TABLE my_student '|| 'AS SELECT * FROM student WHERE zip = '||v_zip; EXECUTE IMMEDIATE sql_stmt; -- Select total number of records from MY_STUDENT table -- and display results on the screen EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM my_student' INTO v_total_students; DBMS_OUTPUT.PUT_LINE ('Students added: '||v_total_students); -- Select current date and display it on the screen plsql_block := 'DECLARE ' || ' v_date DATE; ' || 'BEGIN ' || ' SELECT SYSDATE INTO v_date FROM DUAL; ' || ' DBMS_OUTPUT.PUT_LINE (TO_CHAR(v_date, ''DD-MON- YYYY''));'|| 'END;'; EXECUTE IMMEDIATE plsql_block; -- Update record in MY_STUDENT table sql_stmt := 'UPDATE my_student SET zip = 11105 WHERE student_id = :1 '|| 'RETURNING zip INTO :2'; EXECUTE IMMEDIATE sql_stmt USING v_student_id RETURNING INTO v_new_zip; DBMS_OUTPUT.PUT_LINE ('New zip code: '||v_new_zip);END;تخيل بقى لو حبينا نعقدها شوية صغيرة بمعنى ( انى مش عارف اصلاا انا هدخل البيانات دى فى جدول x ولا y ولا z الخ الخ الخالحل انك تعمل لست ايتم فى فورمة يجيب كل الجداول و المطلوب منك تحطة فى جملة السكول الى موجودة فى EXECUTE IMMEDIATEبس تحط قبلها كونكت و بعدها كونكت و تخلى بالك من الفواصل و بكدة هيفهم ان الجدول اسمة جاى من اللست ايتماخى Hobaa قمت بعمل هذة الفورمة من فترة .. سأبحث عنها و اضعها على المنتدى و شكراOracle ITselfو الله اعلم تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة comment_67280 اما دا بقى ما يسمى الدينمك كرزرDECLARE TYPE student_cur_type IS REF CURSOR; student_cur student_cur_type; v_zip VARCHAR2(5) := '&sv_zip'; v_first_name VARCHAR2(25); v_last_name VARCHAR2(25);BEGIN OPEN student_cur FOR 'SELECT first_name, last_name FROM student '|| 'WHERE zip = :1' USING v_zip; LOOP FETCH student_cur INTO v_first_name, v_last_name; EXIT WHEN student_cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE ('First Name: '||v_first_name); DBMS_OUTPUT.PUT_LINE ('Last Name: '||v_last_name); END LOOP; CLOSE student_cur;EXCEPTION WHEN OTHERS THEN IF student_cur%ISOPEN THEN CLOSE student_cur; END IF; DBMS_OUTPUT.PUT_LINE ('ERROR: '|| SUBSTR(SQLERRM, 1, 200));END;ارجوا تكونوا استفدتوا حاجة و الله اعلمOracle ITself تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة كاتب الموضوع comment_67305 بارك الله فيك يا اخي وكثر من امثالك تقديم بلاغ
بتاريخ: 24 أبريل 200619 سنة comment_67317 الف شكر ياباشششششششششششششششششششششششششششششششششششششششايهاب وجدى تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.