الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

sequence في اوراكل 9i

مغلق
بدأه عبدالله الحمد في 8 فبراير 2003 · 9 رد · 924 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمت الله وبركاته اما بعد

انا سعيد بكم وبهذا المنتدى الرائع الذي كنت اتابعة من زمان وانا بدأت بالاوراكل وكانت بداية مع اخر اصدارات اوراكل

لكن واجهتني اليوم مشكلة مع sequence وكيفية استرجاع القيمة الحالية قرات ان الطريقة هي كالتالي

select emp_seq_no.currval

from dual;

جربت هذه الطريقة لم تضبط مع العلم ان احد الزملاء عنده اوراكل 8i عملت هذه الطريقة بسلام

#2

الطريقة صحيحة (لو) كن لديك متسلسلة بهذا الاسم، فما هو الخطأ الذي حصلت عليه؟

#3

try this statement befor your statement

select emp_seq_no.nextval from dual

and then try your statement

cuz if you have no value in the sequence you have nothing in currval

;)

#4

ولكنه سيفقد قيمة من المتسلسلة بهذا الأمر، وعمليا ذلك مرفوض، فلو كان يعمل في دائرة حكومية أو شركة كبرى، فإن فقدان قيمة من المتسلسلة سيضع مدير قاعدة البيانات تحت المسائلة القانونية (سألوا مجرب;)).

فالمتسلسلة عند أخذ قيمة ال currval يتظهر القيمة التي من المفترض ان ستؤخذ في المرة القادمة من تشغيلها على ال nextval. لذا تبدأ المتسلسلات بالقيمة 1 (واحد) عادة، وحتى لو بدأت بقيمة صفرية، فهو ايضا رقم ويجب ان يظهر

#5

i mean if the sequence have created it have no currval value since execute

the nextval alstatement

like this senario

create sequence seq1;

select nextval.seq1.nextval from dual ;

ERROR at line 1:

ORA-08002: sequence SEQ1.CURRVAL is not yet defined in this session

so

if he just try and didn't work in critical things

try my way cuz the statement he write is currect and he can help us

if he specify the error number

#6

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

CREATE SEQUENCE oracle_user.squence_name INCREMENT BY xxx 

START WITH yyy MAXVLUE zzzzzzz MINVALE ttt  CYCLE/NOCYCLE 

NOCACHE/CACHE uuu
#7

انا معك شو ما حطيت القيم يلي اهملتا انا ما بيشتغل الا اذا استخدمت nextval قبل currval

جربها و سترى:D

#8

مشكورين وماقصرتوا فعلا فلقد طلبت الرقم الحالي وانا لم اضع اي قيمة فية

#9

نجحت طريقة nextval ؟؟؟؟؟

#10

بعد ان انحلت المشكلة في sql * plus وذهبت للديفلوبر وكتب الكود التالي

	select patientno.nextval

	into s

	from dual;

ويقول ان المتغير DUAL يجب تعريفه

identfier 'DUAL'must be declare

هذا الموضوع مغلق.

مواضيع مشابهة