الانتقال إلى المحتوى
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.

انشاء جدول من خلال البروسيجر

Featured Replies

بتاريخ:

بسم الله الرحمن الرحيم

اخواني الاعزاء ... هل من الممكن انشاء جدول من خلال البروسيجر بحيث انني مثلا اقوم ببعث اسم الجدول
ويقوم البروسيجر بإنشائه .

انا حسب معرفتي انه لا يمكن للبروسيجر تنفيذ جملة انشاء الجدول بتاتا ........ :rolleyes:

هل من الممكن وجود طريقة اخرى ...؟؟؟؟؟؟؟ :rolleyes:


طالب عونكم .... لا تفشلونا

بتاريخ:

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;
------------------------------------------------------------------------------------

بتاريخ:
  • كاتب الموضوع

اخي الكريم heavens اشكرك على الرد , واعتقد ان الكود المرفق بعيد عما طلبته .

هل من الممكن انشاء جدول من خلال البروسيجر .

بتاريخ:

this code shows you how to use forms_ddl function builtin
its main function is to make ddl on th database from procedure or forms

and this is another example of how to create a function
FUNCTION 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;
----------------------------------------------

بتاريخ:

اللهم نسألك الفردوس الأعلى و مرافقه نبيك محمد صلى الله عليه وسلم
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;
/

بتاريخ:
  • كاتب الموضوع

اخي العزيز break اشكرك اولا على الرد , اخي الكريم انت قمت بعمل بروسيجر يعمل
اضافة على الجدول وهذا لا مشكلة فيه , انا اريد عمل انشاء للجدول من خلال البروسيجر .

بتاريخ:

الأخ\ الجبالي

عملت هذه الأكواد و إن شاء الله تكون المطلوب لا كن بصراحة ما ستعملت انا 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;



جرب و خبرني ....................... تحياتي

بتاريخ:
  • كاتب الموضوع

اخي الغالي sky information يا اخي اريد ان اعرف من اين تاتي بهذا الابداع ......
انا للوهلة الاولى اعتقد انك اتيت بالمطلوب
على كل حال راح اجرب الكود وان شاء الله راح اخبرك ... :rolleyes: :rolleyes:

اتمنى المشاركة معنا في مشروع السوبر ماركت المشترك

تسلم يا غالي ..... وفقك الله الى الخير والمحبة .......

بتاريخ:

الأخ الجبالي

تمنى المشاركة معنا في مشروع السوبر ماركت المشترك


انا حاليا منذ فترة أمر في ظروف فإذا فرجت بأذن الله سوف أكون من المشاركين
بتاريخ:
  • كاتب الموضوع

اخي العزيز sky information فعلا الفنكشن كما اريد بالضبط , قمت بانشائه بنجاح
ولكن عند عملية تنفيذه اعترض واخبرني بأنها جملة SQL غير صالحة
:

begin
execute 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 عند

بتاريخ:

الأخ الجبالي أنا راجعت الفنكشن السابقة و لا كن فيها بعض الأخطاء و انا أعتذر عن هذه الأخطاء
الأن بعدد التصحيح جرب و عطني النتيجة .... أعتذر من جديد

function_create_table.txt

بتاريخ:
  • كاتب الموضوع

اخي العزيز sky information لا داعي بتاتا للاعتذار , انا نفذت الفنكشن ولاحظت عدم وجود
الفواصل في البراميتر وهذا لا مشكلة فيه

المشكلة لدي الان في تنفيذ هذا الفنكشن ... دائما يعترض على تنفيذه شاهد المرفقات

post-6338-1188041943_thumb.jpg

بتاريخ:

الخطأ واضح من خلال الصورةعندك لأن أسم الجدول(emp ) موجود حاليا أتوقع انك استعملت
هذا المثال بواسطة المستخدم scott

لتفادي الخطأ فقط غير أسم الجدول و إن شاء الله كل شيء بيضبط معاك :

begin
execute immediate create_table2007('ahmed_2007', 'ename varchar2(10)',
' sal number(10)',
'comm number(10)',
'dept number(10)');
end;

بتاريخ:
  • كاتب الموضوع

اخي العزيز sky information اشكرك من كل قلبي على متابعة الموضوع ,
فعلا انا استخدم scott وكلامك منطقي جدا انه في حالة تغيير اسم الجدول يجب ان يتم تنفيذ
الفنكشن كون ان الجدول emp موجود اصلا لدى scott .

صدق انها راحت من بالي .....هه هه هه ( اعتقد بوجود مشكلة كبيرة .............

على كل حال الامور تمام ولله الحمد تم تنفيذ الفنكشن بنجاح

بارك الله بك وبأمثالك ووفقك للخير ...........

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

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

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

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

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

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.