Anda di halaman 1dari 13

FUNCTION

Andri, S.Kom., M.T.I.


Felix, S.Kom., M.Kom.
Erlina Halim , S.Kom., M.Kom.

PRODI. TEKNIK INFORMATIKA (S-1)


SubTopik
• System Functions
• User Defined Function (UDF)
• Scalar
• Inline table-valued functions
• Multi-statement table-valued functions
Function
• Menyimpan perintah yang sering dipakai
• Mengembalikan nilai
• Bisa berparameter maupun tanpa parameter
• Menyederhanakan query
• Dipanggil dengan menggunakan perintah SELECT
System Functions
• Fungsi yang sudah tersedia pada SQL Server
• Jenis-jenis system functions
• Fungsi String
• Len(string), Lower(string), Upper(string), Left(string, value), Right(string, value),
Substring(string,start,length)
• Fungsi Aritmatika
• Abs(value), Log10(value), Square(value), Sqrt(value), Floor(value), Round(value, length)
• Fungsi Datetime
• Getdate(), Day(date), Month(date), Year(date), Dateadd (interval, value, datetime),
Datediff (interval, startdatetime, enddatetime)
• Fungsi Agregat
• Sum(field), Count(field), Min(field), Max(field)
Syntax
• CREATE/ALTER FUNCTION [schema_name.]function_name
(@parameter1 type ( length ) [ , @parameter2 type ( length ), … ])
RETURNS type
[WITH ENCRYPTION | SCHEMABINDING]
AS
BEGIN
< SQL statement >
RETURN expression
END

• DROP FUNCTION [schema_name.]function_name


UDF-Scalar
• Perintah yang dibuat sendiri oleh DBA baik berparameter maupun
tanpa parameter yang selalu mengembalikan suatu nilai (scalar)
• Nilai yang dikembalikan dapat berupa tipe data char, date, datetime,
float, int, text, decimal, dsb
UDF-Scalar
CREATE FUNCTION dbo.CurrentYear()
RETURNS INT
AS
RETURN year(GetDate())

SELECT dbo.CurrentYear()

SELECT product_name, model_year,


dbo.CurrentYear() - model_year [Range Year]
FROM production.products
UDF-Scalar
CREATE FUNCTION dbo.CekValid
(@nmkolom varchar(50))
RETURNS tinyint SELECT dbo.CekValid(‘’)
AS
SELECT dbo.CekValid(‘Hay’)
BEGIN
DECLARE @valid tinyint
IF @nmkolom = '' SELECT dbo.CekValid(NULL)
SET @valid=0
ELSE
SET @valid=1
RETURN @valid
END
Inline table-valued functions
• Mengembalikan nilai dalam bentuk tabel
• Isi dari function / body function hanya RETURN
CREATE FUNCTION SoldProductbyStaff(@idstaff int)
RETURNS table
AS
RETURN (
SELECT st.first_name + st.last_name SalesName
, pr.product_name, oi.quantity
FROM sales.orders od
JOIN sales.order_items oi ON od.order_id = oi.order_id
JOIN sales.staffs st ON od.staff_id=st.staff_id
JOIN production.products pr ON oi.product_id=pr.product_id
WHERE st.staff_id=@idstaff
)
SELECT * FROM SoldProductbyStaff(2)
Multi-statement table-valued functions
• Mengembalikan nilai dalam bentuk tabel
• Mendeklarasikan struktur tabel yang di return
Multi-statement table-valued functions
CREATE FUNCTION SoldProductbyStaff(@idstaff int)
RETURNS @table TABLE (SalesName varchar(100), ProductName varchar(100), Qty int)
AS
BEGIN
INSERT INTO @table
SELECT st.first_name + st.last_name SalesName
, pr.product_name, oi.quantity
FROM sales.orders od
JOIN sales.order_items oi ON od.order_id = oi.order_id
JOIN sales.staffs st ON od.staff_id=st.staff_id
JOIN production.products pr ON oi.product_id=pr.product_id
WHERE st.staff_id=@idstaff
RETURN
END

SELECT * FROM SoldProductbyStaff(2)


Function with Encryption
• Disisipkan diantara RETURNS dan AS dengan menambahkan kata
WITH ENCRYPTION
• Berfungsi untuk menyembunyikan perintah function
Function with Schemabinding
• Disisipkan diantara RETURNS dan AS dengan menambahkan kata
WITH SCHEMABINDING
• Berfungsi sebagai CONSTRAINT pada tabel yang terkait pada fungsi
sehingga tabel tidak dapat dihapus

Anda mungkin juga menyukai