View Full Version : سوال: فرمت طراحی UDFها
Bahar_HS
سه شنبه 24 فروردین 1389, 23:39 عصر
با سلام،
در طراحی UDFها،تابع تعریف شده یه سری پارامترهای ورودی داره و خروجی هایی،
اگه بخوایم تابعی تعریف کنیم که فقط پارامترهای ورودی داشته باشه_مثل دستور insert_
یا تابعی که رکوردهای یک جدول رو select می کنه و ورودی نداره، فرمت دستورش چطور میشه،من برای select،همچین تابعی نوشتم ،ولی SQL خطا می ده:
CREATE FUNCTION Recycle_1
RETURNS TABLE
AS
BEGIN
Return Select name , family from Table1
where
finish_day is NULL and
finish_mounth is NULL and
finish_year is NULL
END
:متفکر:
svahidm
چهارشنبه 25 فروردین 1389, 12:41 عصر
سلام
اگه تابع باشه كه حتما خروجي داره ولي ميتونه ورودي نداشته باشه .براي بدون ورودي مي توني جلوي اسم تابع () بزاري
CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
]
)
RETURNS return_data_type
[ WITH <function_option> [ ,...n ] ]
[ AS ]
BEGIN
function_body
RETURN scalar_expression
END
[ ; ]
براي تابع بدون خروجي مي توني از Stored-procedure استفاده كني
Bahar_HS
چهارشنبه 25 فروردین 1389, 23:08 عصر
با سلام وممنون از راهنمایی تون،
من لیست پارامترها رو خالی گذاشته بودم ولی از () استفاده نکرده بودم،
اما در مورد توابعی که ورودی دارند وخروجی ندارند،مثل دستورات ذخیره،ویرایش و حذف،
که وردی دارند ولی خروجی برنمی گردونن،چطور ؟
این دستورات در هر برنامه ای متفاوتند و من فکر می کردم که میشه توابع مربوط به اونها رو
در بخش UDFها نوشت،
جلوی Return رو خالی گذاشتم ولی اشکال می گیره،
باید چطور این دستورات رو بنویسم؟:متفکر:
Rejnev
چهارشنبه 25 فروردین 1389, 23:33 عصر
از stored Procs ها استفاده کن
معمولا موقعی از تابع استفاده میکنیم که بخوایم از اون در دستور select یا مقدار دهی متغیر استفاده کنیم
مثلا
select number,fPowerTwo(number)
from tbl
fPowerTwo یک تابع با یک پارامتر ورودی و یک خروجی هست.
البته توابع همیشه هم لازم نیست پارامتر داشته باشن ولی مقدار خروجی چرا(return)
----
با sp میشه چهار عمل اصلی insert update delete select رو انجام داد
پارامتر به sp بفرستید و طبق پارام ها دستور رو بنویسید و اجرا کنید. نیازی هم نیست خروجی پس بدید.
--for example
create proc myProc @code int as
begin
--some works like delete
delete from tbl where code>@code;
--some select
select * from tbl where code=@code
end
go
exec myProc 10
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.