PDA

View Full Version : دستور select که داده را تغییر میدهد؟؟؟



sima.vafa
شنبه 21 دی 1392, 11:35 صبح
سلام دوستان
راستش من دو دستور select دارم که یکی داده رو تغییر میده:

select next_val.sequence from dual;

و یکی که تغییر نمیده:

select curnent_val.sequence from dual;

ولی نمیدونم چه جوری کار میکنن؟ یا چه فرقی با هم دارن؟
اگه یه توضیح کوچیک بدید ممنون میشم

Salah Sanjabian
شنبه 21 دی 1392, 17:05 عصر
سلام . دستور سلکت داده رو تغییر نمیده. دارین از جدول میخونید؟ اسم جدولتون dual هست؟ next_val.sequence و curnent_val.sequence اسم فیلداتونه؟

N_D
یک شنبه 22 دی 1392, 14:32 عصر
اگه اشتباه نکنم اینها جداول ORACLE هستند.. که dual جدول فیزیکی نیست
مثلا ما تو SQLSERVER میتونیم بنویسیم SELECT 1 as A ولی تو ORACLE باید از یک جدول مجازی کوئری بگیریم یعنی باید بنویسیم SELECT 1 as A From dual

sima.vafa
سه شنبه 01 بهمن 1392, 18:38 عصر
سلام
ممنون از توجهتون
جدولی در کار نیست هدف فقط فهم دستورات هستش
خودم یه چیزایی فهمیدم ولی کامل نیست:
در دستور اول دستور nexval مقدار بعدی را بر اساس گام افزایش می دهد و
برای بازیابی مقدار بعدی در دنباله استفاده شده است
در واقع Sequence روشی برای تولید اعداد ترتیبی با قابلیت افزایش یا کاهش
عدد‌های دلخواه می‌باشد که توسط کاربر یا برنامه نویس ایجاد می‌شود.
بنابراین Sequenceها User-Defined می‌باشند.
در زمان ایجاد Sequence، نوع آن می‌بایست عددی باشد، چنانچه ،Type آن را
مشخص نکنیم، SQL Server، نوع آن را bigint در نظر می‌گیرد.

اما در دستور دوم یک جریان یا یک سری مقادیر را به صورت سری به عنوان خروجی می آورد

حمیدرضاصادقیان
چهارشنبه 02 بهمن 1392, 11:43 صبح
سلام.


next_val.sequence و curnent_val.sequence اسم فیلداتونه؟
اینها فیلد نیستند.

SEQUENCE یک قابلیت جدید هست که به نسخه 2012 اضافه شده و به شما امکان اینرو میده یک شمارنده عمومی بدون وابستگی به هیچ جدولی داشته باشید.
برای توضیحات تکمیلی اینجا (http://http://technet.microsoft.com/en-us/library/ff878091.aspx) رو ببینید.