PDA

View Full Version : سوال: استفاده از function در SQL



newsoft
پنج شنبه 30 اردیبهشت 1389, 11:32 صبح
برای طراحی یه سایتی از من خواستن برای استفاده کوری های اونها رو ابتدا توی function بنویسم بعد هر جا که خواستم ازش استفاده کنم
الان من دوتا مشکل دارم
1- چه جوری کوری هامو توی function بنویسم
2- حالا که نوشتم چه جوری ازش استفاده کنم(ارتباط با صفحات)

محمد سلیم آبادی
پنج شنبه 30 اردیبهشت 1389, 12:08 عصر
منظورتون از SQL چی هست؟ Microsoft SQL Server یا MS Access یا .... ؟

اگر SQL Server باشه، لطفا این تاپیک را حذف کنید و سوال را در بخش مذکور ایجاد کنید. تا راجب بحث table-valued UDF یا همون TVF گفتگو کنیم.

newsoft
پنج شنبه 30 اردیبهشت 1389, 12:29 عصر
مدیریت تاپیک منو عوض کرد
من می خوام بدونم یه ّfunction که توی microsoft sql server چه جوری بنویسم حالا که نوشتم چه جوری توی asp.net استفاده کنم

محمد سلیم آبادی
پنج شنبه 30 اردیبهشت 1389, 12:46 عصر
اینکه می خواهین در web-application استفاده کنید یا ... فرقی نمی کنه. چون شما در هر صورت دارین با دستورات ADO با بانک اطلاعاتی تبادل می کنید.

اول از همه باید مشخص بشه چرا اون فرد/افراد به شما گفته/گفتند باید از تابع برای نمایش اطلاعات استفاده کنید. در صورتی که اصولش این است از SELECT در SP استفاده شد.

با این فرض که تابعی ایجاد کردیم که داده های جدول را بر می گرداند. باز هم نیاز داریم در دستور SELECT از آن استفاده کنیم. مثال:
SELECT * FROM dbo.function_name ();--d

پس بازم نیاز به یک SP داریم که این عبارت فوق را در خودش ذخیره کند.

newsoft
پنج شنبه 30 اردیبهشت 1389, 13:03 عصر
مگه توی function دستور select,.. را نمینویسیم
برای فرا خوانی تابع function_name () داخل sql data sourse مثلا توی بخش query کافی نیست؟؟
دیگه نیاز نباشه برای چند صفحه یک جور دوباره دستور select بنویسیم
ورودی بدیم و خروجی بده

محمد سلیم آبادی
پنج شنبه 30 اردیبهشت 1389, 13:22 عصر
اول یک سری به این تاپیک بزنید (پست دوم)
http://www.barnamenevis.org/forum/showthread.php?t=220721

همانطور که در پست قبلیم گفتم شما نمی تونید مستقیم تابع را اجرا کنید، مجبوریم در دستور SELECT از آن استفاده کنیم (شایدم همانطور که برای اجرای SP روش وجود داره برای تابع هم وجود داشته باشه در این مورد اطلاعی ندارم)

تابعی که جدول بر میگردونه دقیقا مثل یک VIEW عمل می کنه. خب شما می تونید بدون SELECT گرفتن از ویو، اطلاعات آن را نمایش بدین؟! در حالی که Query اصلی ما در VIEW نوشته شده است.

تعریف تابع:

CREATE FUNCTION dbo.function_name () RETURNS TABLE AS
RETURN (SELECT .. FROM .. WHERE ... );--end


استفاده از تابع:

SELECT * FROM dbo.function_name


در ضمن من هنوز دلیلی برای استفاده از تابع در این مورد از طرف شما نگرفتم.

newsoft
پنج شنبه 30 اردیبهشت 1389, 15:03 عصر
مثلا برای تغییر رمز مدیر ،معاون و کارمندان سه صفحه متفاوت استفاده میشه(برای یه سری دلایل خواصی) ولی همشون از یه تیبل یوزر استفاده می کنن من نمی خوام برای هر سه تاشون مجبور باشم یه کدو سه بار تکرار کنم جاش می خوام از تابع استفاده کنم(که مهمترین ویژگی تابعست)
یه لینک نوشتن Scalar-valued function به من بدی ممنون می شم

محمد سلیم آبادی
پنج شنبه 30 اردیبهشت 1389, 23:27 عصر
یه لینک نوشتن Scalar-valued function به من بدی ممنون می شم
http://msdn.microsoft.com/en-us/library/aa258261(SQL.80).aspx

قسمت scalar function را بخوانید.