PDA

View Full Version : گفتگو در مورد views و stored Procedures



rezaei manesh
شنبه 24 دی 1384, 08:26 صبح
سلام
من می خوام از views و stored Procedures بیشتر بدونم
مثلا این که چه موقع بهتر از views استفاده کنیم چه موقع از stored Procedures استفاده از اینها در سرعت چه تاثیری داره و ...

در ضمن من دو تا view ساختم که با دو فیلد کلیدی به هم وصل کردم و view دومی رو به برنامه می برم اما view اول من باید با یک مقدار که اونو ار برنامه می گیرم اول فیلتر بشه؟
چه روشی برای این کار وجود داره باید چکار کنم؟
در ضمن وقتی می خواهیم یک کویری بسازیم اونجا یه تا تپ وجود داره یکی جدول یکی ویو و یکی function که من نمیدونم این function چیه و کار با اون چطوریه؟

Hamedm
شنبه 24 دی 1384, 08:53 صبح
سلام
من می خوام از views و stored Procedures بیشتر بدونم
مثلا این که چه موقع بهتر از views استفاده کنیم چه موقع از stored Procedures استفاده از اینها در سرعت چه تاثیری داره و ...

در ضمن من دو تا view ساختم که با دو فیلد کلیدی به هم وصل کردم و view دومی رو به برنامه می برم اما view اول من باید با یک مقدار که اونو ار برنامه می گیرم اول فیلتر بشه؟
چه روشی برای این کار وجود داره باید چکار کنم؟
در ضمن وقتی می خواهیم یک کویری بسازیم اونجا یه تا تپ وجود داره یکی جدول یکی ویو و یکی function که من نمیدونم این function چیه و کار با اون چطوریه؟

سلام

اگه خودتون به معنی لغوی این دو مبحث توجه میکردید، مطمئنا پاسختان را پیدا میکردید.
Veiw معمولا یک SELECT است (SELECT برمیگردونه) که میشه اونو به عنوان یک جدول هم نگاه کرد. یعنی میشه در دیگر SELECT ها View رو بعد از FROM بکار برد. و نیز سرعت فوق العاده بالایی داره.
اما SP هم میتواند SELECT برگردونه و هم مقدار. در SP معمولا از دستورات TSQL استفاده میشه (IF و WHILE و Declareکردن متغیر و ...). SP پارامتر میگیره اما View پارامتر نمیگیره. یعنی SELECT خروجی میتواند بر اساس پارامترهای ورودی به SP تغییر کند. SP یک چیزی شبیه FUNCTION در SQL Server است اما با این تفاوت که SELECT هم بیمیگردونه.

در پناه حق موفق باشید و پرتوان

rezaei manesh
شنبه 24 دی 1384, 09:09 صبح
در ضمن من دو تا view ساختم که با دو فیلد کلیدی به هم وصل کردم و view دومی رو به برنامه می برم اما view اول من باید با یک مقدار که اونو ار برنامه می گیرم اول فیلتر بشه؟
به این جملاتم دقت کن!
حالا اینو چطور درست کنم؟

Hamedm
شنبه 24 دی 1384, 11:39 صبح
در ضمن من دو تا view ساختم که با دو فیلد کلیدی به هم وصل کردم و view دومی رو به برنامه می برم اما view اول من باید با یک مقدار که اونو ار برنامه می گیرم اول فیلتر بشه؟
به این جملاتم دقت کن!
حالا اینو چطور درست کنم؟
سلام

باید از SP استفاده کنی نه View.

در پناه حق موفق باشید و رپتوان

rezaei manesh
یک شنبه 25 دی 1384, 08:11 صبح
خواستم اما نتونستم
یعنی 2 تا sp استفاده کنم ؟خوب آنها رو چطوری در sql ارتباط بدم
نمیشه یه sp و یه view بسازم و آنها رو توی محیط sql ارتباط بدم؟
در ضمن اگه یه نمونه کد هم برای ساخت یه sp داری که یک مقدار به گیره و یه سری رکورد بده به من بدی ممنون می شم خودم یه چیزایی نوشتم اما خطا میده.
با تشکر از جواباتون

Hamedm
یک شنبه 25 دی 1384, 19:58 عصر
خواستم اما نتونستم
یعنی 2 تا sp استفاده کنم ؟خوب آنها رو چطوری در sql ارتباط بدم
نمیشه یه sp و یه view بسازم و آنها رو توی محیط sql ارتباط بدم؟
در ضمن اگه یه نمونه کد هم برای ساخت یه sp داری که یک مقدار به گیره و یه سری رکورد بده به من بدی ممنون می شم خودم یه چیزایی نوشتم اما خطا میده.
با تشکر از جواباتون

سلام

نه عزیز جان، همین QUERY که میخواستی در View پیاده سازی کنی، حالا در SP پیاده سازی کن.
Books Online در مورد SP مفصل بحث کرده و مثال هایی هم زده.

در پناه حق موفق باشید و پرتوان

rezaei manesh
دوشنبه 26 دی 1384, 09:27 صبح
آخه مشکل ابنجاست که باید بد این دو QUERY رو توسط دو فیلد با هم ارتباط بدم

Hamedm
دوشنبه 26 دی 1384, 12:55 عصر
آخه مشکل ابنجاست که باید بد این دو QUERY رو توسط دو فیلد با هم ارتباط بدم

سلام

عزیز جان در بدترین شرایط اگه نمیدونی چطوری باید QUERY رو بسازی، اونو در یک View بساز و در SP کپی کن (ولی این روش رو اصلا پیشنهاد نمیکنم همیشه بکار ببرید).

در پناه حق موفق باشید و پرتوان

titbasoft
دوشنبه 26 دی 1384, 14:38 عصر
از UDF یا user defined function ها هم که بحث مفصلی داره می شه استفاده کرد. فکر کنم چیزی که شما می خواهید با یک in line table value function باشه. یه مثال:



-- DDL
create function myfn (@par1 int)
returns table as
return (
select * from myview where tableid=@par1
)

-- DML
select * from myfn(2)

Hamedm
دوشنبه 26 دی 1384, 15:03 عصر
از UDF یا user defined function ها هم که بحث مفصلی داره می شه استفاده کرد. فکر کنم چیزی که شما می خواهید با یک in line table value function باشه. یه مثال:



-- DDL
create function myfn (@par1 int)
returns table as
return (
select * from myview where tableid=@par1
)

-- DML
select * from myfn(2)


سلام

یک استادی به من گفت: "هر موقع خواستی تابعی بنویسی که Table برمیگردونه، بجای تابع از SP استفاده کن."

در پناه حق موفق باشید و پرتوان