SQL Server User Defined Function : สอน คำสั่ง ของ User Defined Function, เรียน คำสั่ง ของ User Defined Function
 

Reference

Reference ในเว็บไซต์ Function.in.th เป็นการนำเสนอความรู้ในรูปแบบของแหล่งอ้างอิงของคำสั่งต่าง ๆ ที่ใช้ในการเขียนโปรแกรม โดยผู้ที่สนใจสามารถเข้ามาเรียนรู้การใช้งานคำสั่งของการเขียนโปรแกรมเหล่านี้ได้ ผ่านทาง URL code.function.in.th ทั้งนี้ผู้อ่านยังสามารถร่วมแสดงความคิดเห็นบนเนื้อหาที่มีสอนได้ ซึ่งถือเป็นการส่งเสริมให้มีการแลกเปลี่ยนประสบการณ์และความรู้ระหว่างผู้อ่านด้วยกันเอง
  • ข้อจำกัดของ User Defined Functions ( UDF ) ข้อจำกัดของ User Defined Functions ( UDF )
    ประเภทของ User Defined Functions ประเภทของ User Defined Functions
    Scalar Functions Scalar Functions
    Inline Table-valued Functions Inline Table-valued Functions
    Multi-statement Table-value Functions Multi-statement Table-value Functions
    DROP FUNCTION ลบ User Defined Function
  • subject :
    ข้อจำกัดของ User Defined Functions ( UDF )

    content :
    ข้อจำกัดของ User Defined Functions ( UDF )
    1) ส่งค่ากลับได้ทุกประเภท ยกเว้น text, ntext, image, cursor, user_defined, timestamp
    2) มี parameter ได้ไม่เกิน 1024 ตัว
    4) ภายใน User Defined Functions สามารถเรียกใช้ User Defuned Functions อื่นๆ ได้ด้วย
    3) ภายใน User Defined Functions สามารถเรียกใช้ User Defuned Functions ตัวเองได้ไม่เกิน 32 ระดับ ( Recursion )
    4) ใช้คำสั่ง EXEC ภายใน User Defined Functions ไม่ได้
    5) คำต่อไปนี้ใช้ไม่ได้ใน User Defined Functions ได้แก่ @@CONNECTIONS, @@POCK_SENT, @@CPU_BUSY,
    @@PACKET_ERRORS, @@IDLE, @@TIMETICKS, @@IO_BUSY, @@TOTAL_ERRORS, @@MAX_CONNECTIONS,
    @@TOTAL_READ, @@PACK_RECEIVER, @@TOTAL_WRITE, GETDATE, GETUTCDATE, NEWID, RAND, TEXTPTR

  • subject :
    ประเภทของ User Defined Functions

    content :
    User Defined Functions มี 3 ประเภท ได้แก่
    1) Scalar Functions
    2) Inline Table-valued Functions
    3) Multi-statement Table-value Functions

  • subject :
    Scalar Functions

    syntax :
    CREATE FUNCTION [owner_name.]function_name
    	( @parameter [ AS ] data_type [ = default_value ] )
    RETURNS data_type
    [ WITH { ENCRYPTION | SCHEMABINDING } ]
    [ AS ]
    BEGIN
    	<statement>
    	RETURN scalar_expression
    END

    content :
    เป็นการสร้าง function เพื่อใช้ประโยชน์ต่างๆ

    example :
    --------- ex1
    CREATE FUNCTION udf_dateOnly
    	( @mydate smalldatetime )
    RETURNS varchar(20)
    AS
    BEGIN
    	RETURN CONVERT(varchar(20), DATEPART(mm, @mydate)) + "/"
    		+ CONVERT(varchar(20), DATEPART(dd, @mydate)) + "/"
    		+ CONVERT(varchar(20), DATEPART(yyyy, @mydate))
    END
    GO
    SELECT id, udf_dateOnly(date_born) FROM person
    --------- ex2
    CREATE FUNCTION udf_squareArea
    	( @width decimal(4,1), @height decimal(4,1) )
    RETURNS decimal(8,2)
    AS
    BEGIN
    	DECLARE @sum decimal(8,2)
    	SET @sum = @width * @height
    	RETURN @sum
    END
    CREATE TABLE Square
    (
    	id int PRIMARY KEY,
    	width decimal(4,1),
    	height decimal(4,1),
    	area AS ( udf_squareArea(width, height) )
    )
    --------- ex3
    CREATE FUNCTION udf_totalQtyAvg()
    RETURNS int
    AS
    BEGIN
    	RETURN ( SELECT AVG(quantity) FROM orders )
    END
    SELECT id, ( SELECT AVG(quantity) FROM orders )
    FROM orders
    SELECT id, udf_totalQtyAvg()
    FROM orders

  • subject :
    Inline Table-valued Functions

    syntax :
    CREATE FUNCTION [owner_name.]function_name
    	( @parameter [ AS ] data_type [ =default ] )
    RETURNS TABLE
    [ WITH { ENCRYPTION | SCHEMABINDING } ]
    [ AS ]
    RETURN
    	[ ( ]
    		<select_statement>
    	[ ) ]

    content :
    เป็นการสร้าง function ที่จะ คืนค่าออกมาเป็น table

    example :
    CREATE FUNCTION udf_productByTypeOf
    	( @typeId int )
    RETURNS TABLE
    AS
    RETURN
    	(
    		SELECT id, name, price
    		FROM product
    		WHERE type_id = @typeId
    	)
    DO

  • subject :
    Multi-statement Table-value Functions

    syntax :
    CREATE FUNCTION [owner_name.]function_name
    	( @parameter [ AS ] data_type [ =default ] )
    RETURNS @return_value TABLE
    	< table_type_definition >
    [ WITH { ENCRYPTION | SCHEMABINDING } ]
    [ AS ]
    BEGIN
    	<statement>
    	RETURN
    END

    content :
    เป็นการสร้างตารางเสมือนขึ้นมา ที่จะกำหนดตรง < table_type_definition >
    เพื่อที่จะถูกดำเนินการบางอย่าง แล้วคืนค่า table นั้นกลับไป

    example :
    CREATE FUNCTION udf_ordersVat
    	( @vat int )
    RETURNS @ordersVat TABLE
    	(
    		id int,
    		item_name varchar(100),
    		price_vat money
    	)
    AS
    BEGIN
    	INSERT INTO @ordersVat
    	SELECT a.id, b.name, ( ( b.price * ( 100 + @vat ) ) / 100 ) AS price_vat
    	FROM orders a INNER JOIN product b ON a.item_id = b.id
    	RETURN
    END
    SELECT * FROM udf_ordersVat ( 7 )

  • subject :
    DROP FUNCTION

    syntax :
    DROP FUNCTION function_name

    content :
    ใช้ลบ function ที่กำหนด

    example :
    CREATE FUNCTION udf_ordersVat
    	( @vat int )
    RETURNS @ordersVat TABLE
    	(
    		id int,
    		item_name varchar(100),
    		price_vat money
    	)
    AS
    BEGIN
    	INSERT INTO @ordersVat
    	SELECT a.id, b.name, ( ( b.price * ( 100 + @vat ) ) / 100 ) AS price_vat
    	FROM orders a INNER JOIN product b ON a.item_id = b.id
    	RETURN
    END
    
    DROP FUNCTION udf_ordersVat

 
Share This Chapter Login with Facebook