PDA

View Full Version : تفاوت توابع in line با multi line



خسرو خان
شنبه 02 مرداد 1389, 14:40 عصر
سلام
فرق تابع in line با تابع multi line در چیه ؟

محمد سلیم آبادی
شنبه 02 مرداد 1389, 15:00 عصر
منظورتون از multi line آیا multi statement هست دیگه؟!
این توابع از نوع table-value هستن.
در نوع Inline ما یک متغیر جدولی تعریف نمی کنیم ولی در نوع multi statement اینکار را می کنیم و بعد از درج تعدادی سطر آنها را بر میگردانیم.

نمونه از inline


CREATE FUNCTION test RETURNS TABLE
AS
RETURN (SELECT ... )


multi statement


CREATE FUNCTION test RETURNS @table TABLE (i int) AS
BEGIN
body
RETURN
END


برای اطلاعات کامل و دقیق به book Online مراجعه کنید.

AminSobati
شنبه 02 مرداد 1389, 21:48 عصر
سلام دوست عزیزم،
نکته مهم در مورد این توابع این هست که توابع Inline در Query اصلی ادغام میشن و Plan بهتری برای اجرا بدست میاد، درست مثل View. ولی توابع Multi Statement این خاصیت رو ندارند و SQL Server تعداد رکوردهایی که قراره استخراج بشه رو با روش Hard Code شده تخمین میزنه