إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

Procedure ما نحل معي !


5 رد (ردود) على هذا الموضوع

#1 allmaida

allmaida

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 24 August 2010 - 11:23 AM

السلام عليكم

كيف الشباب

بعد اذنكن بدي حدا يساعدني ...

مطلوب مني بالشغل procedure منمرقلو بارامترين اول واحد حيكون اسم ال table يللي حتنبنى جوا ال procedure هاد

والتاني حيكون رقم

وال table يللي حانشأو حيكون من حقلين اول واحد بدي ينطبع فيه الشكل التالي" num1 * num2" وبالحقل التاني النتيجة

علما ان num1 هو البارمتر التاني يللي مرقناه وال num2 هو رقم تسلسلي (عداد او هيك شي )

انا حليت كلشي تقريبا ... بس ما عم تزبط معي انو يطلع "*" بالخرج ... عم يطالعلي الناتج بالحقلين

هي حلي ...

بتمنى تساعدوني بسرعة
Create or replace procedure proc (name in varchar2, num in number)
Is
f number :=num;
d number;
C number :=0;
s varchar2(20);
lstr long;
Begin
Lstr := 'create table ' || name || '(numbe varchar2(20) , gen number)';
Execute immediate lstr;
While c<10
Loop
s:=c||'*'||f;
d:=c*f;

execute immediate 'insert into '||name||' values ('||s||' , '||d||')';
c:=c+1;
End loop;
End;
/


#2 allmaida

allmaida

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 24 August 2010 - 12:12 PM

حلييييييييييييييتو لحالي :rolleyes:

#3 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 24 August 2010 - 12:35 PM

اخي يوجد مشكله في الكود
يضهر الخطأ التالي
صورة

#4 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 24 August 2010 - 03:43 PM

ممكن تقولي شنو الحل لو تسممح

#5 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 24 August 2010 - 03:50 PM

هذا الحل

Create or replace procedure proc (name in varchar2, num in number)  
Is  
f number :=num;  
d number;  
C number :=0;  
s varchar2(20);  
lstr long;  
Begin  
Lstr := 'create table ' || name || '(numbe varchar2(20) , gen number)';  
Execute immediate lstr;  
While c<10  Loop  
s:=c || '*' || f;
d:=c*f;  
execute immediate 'insert into '||name||' values ('''||s||''' , '||d||')';  
c:=c+1;  
End loop;  
End;


#6 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 24 August 2010 - 03:59 PM

و هذا الكود يعتبر اصح في حالة اذا كان الجدول موجود فيقوم بحذفه ثم انشائه

Create or replace procedure proc (name in varchar2, num in number)  
Is  
f number :=num;  
d number;  
C number :=0;  
s varchar2(20);  
lstr long;  
Begin  
Lstr := 'drop table ' || name;
Execute immediate lstr;  
Lstr := 'create table ' || name || '(numbe varchar2(20) , gen number)';  
Execute immediate lstr;  
While c<10  Loop  
s:=c || '*' || f;
d:=c*f;  
execute immediate 'insert into '||name||' values ('''||s||''' , '||d||')';  
c:=c+1;  
End loop;  
exception
when others then
null;
End;