View Full Version : exec در function
niloo17
یک شنبه 22 آذر 1388, 10:22 صبح
سلام دوستان
چه جوری می تونم از دستور exec برای اجرا ی یک select در function استفاده کنم
ممنون می شم اگه راهنماییم کنید
niloo17
یک شنبه 22 آذر 1388, 10:35 صبح
function که اجرا می کنم بدون خطاست ولی وقتی صداش می زنم خطای زیر را میده
Only functions and extended stored procedures can be executed from within a function.
ASKaffash
یک شنبه 22 آذر 1388, 10:41 صبح
سلام
درون بدنه تابع نمی توان دستور EXEC را استفاده کرد :
ASKaffash
یک شنبه 22 آذر 1388, 10:47 صبح
پس من باید چیکار کنم
چه جوری دستور select را اجرا کنم
سلام
منهم در یک پروژه می خواستم همین کار را انجام دهم ولی نشد
باید روش کار را تغییر دهید به نظرم مسئله اصلی را عنوان کنید شاید از راه دیگری میتوان مسئله را حل کرد ؟
niloo17
یک شنبه 22 آذر 1388, 10:52 صبح
من یک view ایجاد کردم
و توی function می خوام بر اساس یک ورودی یک خروجی به من بده
DECLARE @TitleSpace nvarchar(MAX)
Declare @Param nvarchar(max)
select @param = N'@Output nvarchar(max) OUTPUT'
DECLARE @SelectSpace nvarchar(MAX)
SELECT @SelectSpace='Select ' + SQLNamesField + ' AS Title FROM ' + TableLatinName + ' WHERE ' + FieldLatinName + '=' + CONVERT(nvarchar(20), PKValue)
FROM dbo.SpaceView WHERE (ID = @ID)
EXEC sp_executesql @SelectSpace,@Param,@TitleSpace OUTPUT
RETURN (@TitleSpace);
ASKaffash
یک شنبه 22 آذر 1388, 11:10 صبح
سلام
حالا چرا Function ؟ می توانید همین عمل را با یک SP انجام دهید مشکل EXEC هم ندارید.
ASKaffash
یک شنبه 22 آذر 1388, 11:20 صبح
سلام
این کد را تبدیل به یک SP کنید و بجای Return کردن مقدار TitleSpace@ آن را با Select برگردانید و از مقدار آن درون سورس برنامه استفاده کنید
niloo17
یک شنبه 22 آذر 1388, 11:26 صبح
سلام
این کد را تبدیل به یک SP کنید و بجای Return کردن مقدار TitleSpace@ آن را با Select برگردانید و از مقدار آن درون سورس برنامه استفاده کنید
واقعا ببخشید یعنی همه این کدا را توی sp بنویسم و دیگه احتیاجی به function نیست :خجالت:
ASKaffash
یک شنبه 22 آذر 1388, 11:39 صبح
سلام
همه این کدها درون SP کار میکند تنها فرق در نحوه دریافت است اگر از مقدار بازگشتی از یک برنامه کاربردی استفاد میکنید فرق فقط اینطوری است :
با SP :
"SPName P1,P2,P3,..."
با Function :
"Select dbo.FunctionName(P1,P2,...)"
ولی از درون یک Sp دیگر مسئله کمی فرق میکند
niloo17
یک شنبه 22 آذر 1388, 11:44 صبح
سلام
ممنون مشکلم حل شد ولی با sp خیلی سرعت کارم میاد پایین هیچ جوری نمی شه از function استفاده کرد
ASKaffash
دوشنبه 23 آذر 1388, 08:00 صبح
سلام
ممنون مشکلم حل شد ولی با sp خیلی سرعت کارم میاد پایین هیچ جوری نمی شه از function استفاده کرد
سلام
اجرای این منطق با SP یا Function تاثیری در سرعت ندارد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.