PDA

View Full Version : سوال: سوال درباره استفاده از پارامتر ورودی Stored Procedure



baran_mehr
پنج شنبه 03 دی 1388, 14:43 عصر
سلام و عرض تسلیت(شهادت سید و سالار علی ابن الحسین) به همه دوستان گلم:خجالت:
یه سوال کوچیک داشتم چرا نمیشه از متغییری که به عنوان ورودی Sp تعریف شده در دستور Select استفاده کرد؟
آیا باید عمل خاصی روش انجام بدم؟:متفکر:

محمد سلیم آبادی
پنج شنبه 03 دی 1388, 14:48 عصر
سلام،
در کدام ماده ی عبارت SELECT می خواهید این کار را انجام بدین؟

اگر مثلا می خواهین در ماده ی TOP این کار را انجام بدین، باید متغیر را داخل پرانتر قرار بدین مثلا:
select top(@top) * from table_name

البته فکر می کنم این ویژه گی به SQL Sever 2005 یا 2008 اضافه شده باشد

baran_mehr
پنج شنبه 03 دی 1388, 15:15 عصر
نه میخوام به عنوان نام جدول به Select بدم

select * from (@name)
کار نمیکنه؟

Hamid.Kad
پنج شنبه 03 دی 1388, 16:16 عصر
میتونید از دستور Execute استفاده کنید.

Execute('Select * from ' + @top)

baran_mehr
پنج شنبه 03 دی 1388, 17:33 عصر
ممنون Hamid.Kad جان از لطفت .:قلب:
فقط یه سوال :چرا در حالت عادی کار نمیکنه؟

Hamid.Kad
پنج شنبه 03 دی 1388, 21:55 عصر
بخاطر اینکه قبل از اجرای دستور Select (در حالت عادی) ابتدا باید یک QEP ساخته بشه که مشخص میکنه واکشی اطلاعات به چه طریقی انجام بشه. مثلاً از چه اندیسهایی استفاده بشه. ترتیب پیوندها (در صورت لزوم) چجوری باشه و از چه روشی برای عمل پیوند استفاده بشه. مثلاً nested loop یا Hash Join یا Sort Merge Join. همه اینها قبل از اجرای دستور و با استفاده از اطلاعاتی که در کاتالوگ سیستم قرار داره مشخص میشه. حالا اگه اسم جدول از قبل مشخص نباشه و در زمان اجرا مقداردهی بشه، پس QEP هم نمیتونه برای اون ایجاد بشه.
در حالت دوم این اتفاقات در زمان اجرا میفته و در نتیجه امکان اجرا بوجود میاد...

baran_mehr
پنج شنبه 03 دی 1388, 22:06 عصر
ممنون از لطفت دوست عزیز مطلب جالبی بود.
با تشکر :تشویق: