PDA

View Full Version : کمک: خطای شماره 170 در فانکشن



tempali
سه شنبه 22 آذر 1390, 09:25 صبح
سلام من یک فانکشن نوشتم زمانی که می خوام ذخیره کنم خطای 170 میده

CREATE FUNCTION [dbo].[kaf] (@e varchar(3))
RETURNS TABLE
AS
BEGIN
declare @x varchar(5000)

SELECT [_VIW_ONHAND_].* INTO ONHAND FROM [_VIW_ONHAND_]

set @x='select [part no] '
select @x=@x +', (select [total] from [ONHAND] where [part no]=s.[part no] and [customer id]='+
cast(max([customer id]) as varchar(10))+') as ['+cast(max([customer name]) as varchar(50))+']'
from [_customer_]
group by [customer id]
order by [customer id]
set @x=@x+' from [ONHAND] as s
group by [part no],[supplier name],[part main id]
order by [supplier name],[part main id]'
exec(@x)
return(select * from onhand)

END


لطفا کمکم کنید . تو اینترنت هم سرچ کردم ولی نتیجه ای نگرفتم

یوسف زالی
سه شنبه 22 آذر 1390, 11:09 صبح
در توابع اجازه استفاده از جداول موقتی وجود نداره.

tempali
سه شنبه 22 آذر 1390, 14:03 عصر
در توابع اجازه استفاده از جداول موقتی وجود نداره.

سلام
بنده می خواستم خروجی @X رو بصورت table داشته باشم.

یوسف زالی
سه شنبه 22 آذر 1390, 20:12 عصر
مساله این نیست که خروجی تون ایراد داره یا نه.
در تابع نمی تونید از exec استفاده کنید.
برای این کار بهترین راه استفاده از SP هست.
همین کد رو تبدیل به یک SP کنید و اون رو اجرا کنید.
خروجی شما نمی تونه در from یک select استفاده بشه مگر این که در یک جدول ریخته بشه.
مثال:
insert into #t exec MySP

select * from #t where...