بتاريخ: 23 أغسطس 200718 سنة comment_108111 بسم الله الرحمن الرحيماخواني الاعزاء ... هل من الممكن انشاء جدول من خلال البروسيجر بحيث انني مثلا اقوم ببعث اسم الجدول ويقوم البروسيجر بإنشائه .انا حسب معرفتي انه لا يمكن للبروسيجر تنفيذ جملة انشاء الجدول بتاتا ........ هل من الممكن وجود طريقة اخرى ...؟؟؟؟؟؟؟ طالب عونكم .... لا تفشلونا تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة comment_108122 alsalam alikom this code is from forms help---------------------------------------------------------------------------------------** Built-in: FORMS_DDL** Example: The statement parameter can be a block ** of dynamically created PL/SQL code. */ DECLARE procname VARCHAR2(30); BEGIN IF :global.flag = 'TRUE' THEN procname := 'Assign_New_Employer'; ELSE procname := 'Update_New_Employer'; END IF; Forms_DDL('Begin '|| procname ||'; End;'); IF NOT Form_Success THEN Message ('Employee Maintenance Failed'); ELSE Message ('Employee Maintenance Successful'); END IF; END; ------------------------------------------------------------------------------------ تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة كاتب الموضوع comment_108128 اخي الكريم heavens اشكرك على الرد , واعتقد ان الكود المرفق بعيد عما طلبته .هل من الممكن انشاء جدول من خلال البروسيجر . تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة comment_108130 this code shows you how to use forms_ddl function builtin its main function is to make ddl on th database from procedure or formsand this is another example of how to create a functionFUNCTION Do_Sql (stmt VARCHAR2, check_for_locks BOOLEAN := TRUE) RETURN NUMBER IS SQL_SUCCESS CONSTANT NUMBER := 0; BEGIN IF stmt IS NULL THEN Message ('DO_SQL: Passed a null statement.'); RETURN SQL_SUCCESS; END IF; IF Check_For_Locks AND :System.Form_Status = 'CHANGED' THEN Message ('DO_SQL: Form has outstanding locks pending.'); RETURN SQL_SUCCESS; END IF; Forms_DDL(stmt); IF Form_Success THEN RETURN SQL_SUCCESS; ELSE RETURN Dbms_Error_Code; END IF; END; ---------------------------------------------- تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة comment_108136 اللهم نسألك الفردوس الأعلى و مرافقه نبيك محمد صلى الله عليه وسلمCreate table table100(Field1 varchar2(10) primary key,Field2 varchar2(30));CREATE OR REPLACE PROCEDURE add_table100 (p_field1 IN table1.field1%TYPE, p_field2 IN table1.field2%TYPE) IS BEGIN INSERT INTO table100 (field1, field2) VALUES (p_field1, p_field2); Exception When others THEN RAISE_APPLICATION_ERROR(-200100,’Table100 record NOT added.’); END;/ تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة كاتب الموضوع comment_108146 اخي العزيز break اشكرك اولا على الرد , اخي الكريم انت قمت بعمل بروسيجر يعملاضافة على الجدول وهذا لا مشكلة فيه , انا اريد عمل انشاء للجدول من خلال البروسيجر . تقديم بلاغ
بتاريخ: 23 أغسطس 200718 سنة comment_108162 الأخ\ الجباليعملت هذه الأكواد و إن شاء الله تكون المطلوب لا كن بصراحة ما ستعملت انا procedure ولا كن أستعملت function نبدأ باسم الله:1- إنشاء function : create or replace function create_table( table_name varchar2 col1 varchar2 col2 varchar2 col3 varchar2 col4 varchar2) return char as stm varchar2(200); tab_colmuns varchar2(200); begin tab_colmun:=col||','||col2||','||col3||','||col4; stm:='create table '||table_nam|| '('||tab_colmuns||')'; return(stm); end; 2- نفذ الوحدة البرمجية التالية : begin execute immediate create_table('emp', 'ename varchar2(10)', ' sal number(10)', 'comm number(10)', 'dept number(10)'); end; جرب و خبرني ....................... تحياتي تقديم بلاغ
بتاريخ: 24 أغسطس 200718 سنة كاتب الموضوع comment_108215 اخي الغالي sky information يا اخي اريد ان اعرف من اين تاتي بهذا الابداع ......انا للوهلة الاولى اعتقد انك اتيت بالمطلوب على كل حال راح اجرب الكود وان شاء الله راح اخبرك ... اتمنى المشاركة معنا في مشروع السوبر ماركت المشترك تسلم يا غالي ..... وفقك الله الى الخير والمحبة ....... تقديم بلاغ
بتاريخ: 24 أغسطس 200718 سنة comment_108218 الأخ الجبالي تمنى المشاركة معنا في مشروع السوبر ماركت المشترك انا حاليا منذ فترة أمر في ظروف فإذا فرجت بأذن الله سوف أكون من المشاركين تقديم بلاغ
بتاريخ: 24 أغسطس 200718 سنة كاتب الموضوع comment_108250 ان شاء الله ظروفك محلولة اخي العزيز sky information والى الامام وفقك الله ورعاك تقديم بلاغ
بتاريخ: 25 أغسطس 200718 سنة كاتب الموضوع comment_108278 اخي العزيز sky information فعلا الفنكشن كما اريد بالضبط , قمت بانشائه بنجاح ولكن عند عملية تنفيذه اعترض واخبرني بأنها جملة SQL غير صالحة:beginexecute immediate create_table2007('emp', 'ename varchar2(10)',' sal number(10)','comm number(10)','dept number(10)');end;--------------------------------------------------------------------begin*يوجد خطأ عند السطر 1:ORA-00900: SQL غير صالحة جملةORA-06512: line 2 عند تقديم بلاغ
بتاريخ: 25 أغسطس 200718 سنة comment_108282 الأخ الجبالي أنا راجعت الفنكشن السابقة و لا كن فيها بعض الأخطاء و انا أعتذر عن هذه الأخطاء الأن بعدد التصحيح جرب و عطني النتيجة .... أعتذر من جديد function_create_table.txt تقديم بلاغ
بتاريخ: 25 أغسطس 200718 سنة كاتب الموضوع comment_108286 اخي العزيز sky information لا داعي بتاتا للاعتذار , انا نفذت الفنكشن ولاحظت عدم وجود الفواصل في البراميتر وهذا لا مشكلة فيه المشكلة لدي الان في تنفيذ هذا الفنكشن ... دائما يعترض على تنفيذه شاهد المرفقات تقديم بلاغ
بتاريخ: 25 أغسطس 200718 سنة comment_108293 الخطأ واضح من خلال الصورةعندك لأن أسم الجدول(emp ) موجود حاليا أتوقع انك استعملت هذا المثال بواسطة المستخدم scott لتفادي الخطأ فقط غير أسم الجدول و إن شاء الله كل شيء بيضبط معاك : begin execute immediate create_table2007('ahmed_2007', 'ename varchar2(10)', ' sal number(10)', 'comm number(10)', 'dept number(10)'); end; تقديم بلاغ
بتاريخ: 25 أغسطس 200718 سنة كاتب الموضوع comment_108339 اخي العزيز sky information اشكرك من كل قلبي على متابعة الموضوع , فعلا انا استخدم scott وكلامك منطقي جدا انه في حالة تغيير اسم الجدول يجب ان يتم تنفيذ الفنكشن كون ان الجدول emp موجود اصلا لدى scott .صدق انها راحت من بالي .....هه هه هه ( اعتقد بوجود مشكلة كبيرة ............. على كل حال الامور تمام ولله الحمد تم تنفيذ الفنكشن بنجاح بارك الله بك وبأمثالك ووفقك للخير ........... تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.