ฉันจะประกาศตัวแปรในฟังก์ชันค่าตารางได้อย่างไร (เช่นในชื่อของฉัน)
อินไลน์หรือหลายคำสั่ง? เช่นMSDNอธิบายไว้หรือไม่
—
gbn
ฉันจะประกาศตัวแปรในฟังก์ชันค่าตารางได้อย่างไร (เช่นในชื่อของฉัน)
คำตอบ:
มีฟังก์ชั่นมูลค่าโต๊ะสองรสชาติ คำสั่งที่เป็นเพียงคำสั่งเลือกและคำสั่งที่สามารถมีแถวได้มากกว่าคำสั่งเลือก
สิ่งนี้ไม่สามารถมีตัวแปร:
create function Func() returns table
as
return
select 10 as ColName
คุณต้องทำสิ่งนี้แทน:
create function Func()
returns @T table(ColName int)
as
begin
declare @Var int
set @Var = 10
insert into @T(ColName) values (@Var)
return
end
VIEW
ในขณะที่ MSTVF ทำงานเหมือนขั้นตอนการจัดเก็บแบบทึบแสง (แม้ว่าจะมีข้อดีของตัวเองเมื่อเทียบกับ sprocs) ควรเลือกใช้ฟังก์ชันแบบอินไลน์มากกว่า MSTVF หากคุณต้องการคำนวณและจัดเก็บค่ากลาง (เช่นผลลัพธ์ของนิพจน์ฟังก์ชันสเกลาร์ที่ซับซ้อน) ให้ใช้เคียวรีย่อย