Anda di halaman 1dari 5

BABV Function

KompetensiDasar Indikator : Mampu menjelaskan konsep dan menguasai implementasi Function dalam database : MampumenjelaskankonsepFunctiondalamdatabase MampumenjelaskanfungsiFunctiondalamdatabase MampumengimplementasikanFunctiondalamdatabase

A.TeoriSingkat Function dalam bahasa pemrograman adalah sebuah subrutin yang digunakan untuk mengenkapsulasi logika yang sering digunakan. Dengan function, kode program yang membutuhkan logika seperti terdapat dalam function tidak perlu menuliskan ulang akan tetapi cukup memanggil function tersebut. Perbedaan function dengan store procedure adalah function memberikan nilai keluaransementarastoreproceduretidak. SecarakhususdalamSQLServer2000terdapat2macamfunction: BuiltinFunctions Merupakanfunctionyangdisediakanuntukmelakukansuatuoperasitertentu. Misal: - AggregateFunctions Melakukanoperasiyangmengkombinasibeberapanilaimenjadisatu. Contoh:COUNT,SUM,MINdanMAX - CunfigurationFunctions MerupakanFunctiondengannilaiskalaryangmemberikannilaikonfigurasisetting. Contoh:@@SERVERNAME,@@DATEFIRST,@@LANGUAGEdll - CursorFunctions Memberikaninformasitentangstatuscursor Conotoh:@@CURSOR_ROWS,CURSOR_STATUS,@@FETCH_STATUS - DateandtimeFunctions Memanipulasinilaidatetimedansmalldatetime Contoh:DATEADD,DATEDIFF,DATENAME,DATEPART,DAY,MONTH,YEAR,GETDATEdll - MathematicalFunctions Melakukanoperasitrigonometri,geometridannumerik Contoh:ABS,ACOS,ROUND,COS,POWER,SQRT,SIN,TAN,RANDdll - MetadataFunctions Memberikaninformasitentangatributdaridatabasedanobyekdatabase Contoh:DB_NAME,FILE_NAME,COL_LENGTH,COL_NAME,DATABASEPROPERTYdll - RowsetFunctions MemberikanrowsetyangdapatdigunakanpadatabelreferensidalamstatementTransactSQL

I Ketut Putra Yasa, Permog.Client Server D3MI

Contoh:CONTAINSTABLE,OPENQUERY,OPENROWSETdll - SecurityFunctions Memberikaninformasitentangusersdanroles Contoh:IS_MEMBER,fn_trace_geteventinfo,USER_ID,USER,HAS_DBACCESSdll - StringFunctions Memanipulasinilaichar,varchar,nchar,nvarchar,binarydanvarbinary Contoh:ASCII,LEFT,LEN,LOWER,LTRIM,RIGHT,REVERSE,SUBSTRINGdll - SystemFunctions Operasiataulaporanpadabermacamlevelsistemdanobyek Contoh:APP_NAME,CASE,CASTdanCONVERT,DATALENGTH,@@ERRORdll - SystemstatisticalFunctions MemberikaninformasiberkaitandengankemampuanSQLServer Contoh:@@CONNECTIONS,@@CPU_BUSY,@@PACK_SENT,@@Pack_RECEVEDdll - TextandImageFunctions Memanipulasinilaitextdanimage Contoh:PATINDEX,TEXTPTR,TEXTVALID UserdefinedFunctions Merupakanfunctionyangdidefinisikansendiriolehpengguna.SQLServer2000mendukung3tipe userdefinedfunctionsyaitu: - ScalarFunctions - Inlinetablevaluedfunctions - Multistatementtable

SintaksdasaruntukpembuatanFunction: CREATE FUNCTION nama_function ( [ @parameter tipe_data [ ,...n ] ] ) RETURNS tipe_data_return [ AS ] BEGIN statement RETURN nilai-return END Deskripsi Nama_function Adalahnamafungsinya.Harusmengikutiaturanidentifier,yaituharusunikpadasebuahdatabase, @parameter Adalah parameter yang didefiisikan oleh user. Boleh mendefinisikan lebih dari satu parameter. Paramaterharusisipadasaatfungsidieksekusi. Tipe_data_return

I Ketut Putra Yasa, Permog.Client Server D3MI

Adalahtipedatadarihasilyangdikembalikan.Nilaiyangdikembalikanharusmemgacuketipedata yangdidefinisikansebelumnya. Statement AdalahtempatmenuliskanperintahperintahSQL(TransactSQLstatement).

B. Latihan Langkahlangkah(simpansemuascriptyangandabuat): 1. AktifkankembaliDatabaseyangandabuatpadaBabII 2. Functionuntukmenampilkanjumlahpelanggan


--membuat function create function HitungPelanggan() returns int as begin declare @jml int select @jml = count(idpelanggan) from pelanggan return @jml end go --Pemanggilan fuction select dbo.HitungPelanggan() as JumlahPelanggan go --atau declare @tp int exec @tp = hitungpelanggan print 'Jumlah Pelanggan : ' + cast(@tp as varchar(3)) + ' orang'

3. Function untuk menampilkan data Produk dan Layanan berdasarkan kode (kegunaan functiondibawahsamasepertiprocedureSP_TampilProdKodelatihanno.7)
--membuat function CREATE function FcCariProdukLayanan(@kd char(4)) returns table as return (SELECT * FROM ProdukDanLayanan WHERE Kode = @Kd) --pemanggilan function yang menghasilkan tabel select * from dbo.fckodebaru('P001')

I Ketut Putra Yasa, Permog.Client Server D3MI

4. Function untuk membuat kode baru untuk produk dan service berdasarkan jenis (produk/service)
--membuat function CREATE function FcKodeBaru(@jenis char(1)) returns char(4) as begin declare @urut char(3),@max int,@baru char(4) select @max = max(right(kode,3)) from ProdukDanLayanan where left(kode,1) = @jenis if @max is null set @urut = '001' else set @urut = right('00' + cast((@max + 1) as varchar(3)) ,3) set @baru = @jenis + @urut return @baru end --pemanggilan function declare @kodebaru char(4) exec @kodebaru = fcKodebaru 'S' print @Kodebaru --atau select dbo.fckodebaru('P') as Kodebaru

--pemanggilan function didalam procedure insert produkdanlayanan --cek apakah procedure sudah dibuat atau belum IF EXISTS (SELECT name FROM sysobjects WHERE name = 'SPInsertProdukLayanan') DROP PROC SPInsertProdukLayanan Go --membuat procedure CREATE PROCEDURE SPInsertProdukLayanan(@jns char(1),@Nama varchar(50), @hrg money,@stok int) AS DECLARE @Kode char(4) BEGIN TRAN if (@jns in('P','S')) begin exec @kode = FcKodebaru @jns insert into ProdukDanLayanan values(@kode,@nama,@hrg,@stok)

I Ketut Putra Yasa, Permog.Client Server D3MI

end if @@error=0 COMMIT TRAN else ROLLBACK TRAN Go --pemanggilan procedure SPInsertProdukLayanan 'P','busi',2000,10

5. Functionuntukmenampilkantotalpersediaanproduk 6. Functionuntukmenampilkantotalpendapatanbengkelantara2tanggalyangdiinputkan 7. Functionuntukmenampilkanbanyakprodukyangterjualpadatanggaltertentu 8. Function untuk membuat kode pelanggan baru berdasarkan gender, kode ganjil untuk perempuandankodegenapuntuklakilaki 9. Memanggilfunctionkodepelangganbarudidalamprocedureinsertpelanggan 10. Functionmembuatnonotabaruberdasarkantanggal,yymmdddiikutititikdannourut3 digit. Contoh transaksi tanggal 2010/10/25 transaksi pertama kali terjadi diberi no 101025.001 11. Memanggilfunctionnonotabarudidalamprocedureinsertservice 12. Function hitung insentif montir dalam 1 hari, dengan ketentuan insentif= 1000 untuk service dengan tarif dibawah 20000 dan insentif =3000 untuk service dengan tariff 20000 ataulebih. 13. Functionhitungjmlservice(transaksi)yangtelahdikerjakanmontir

I Ketut Putra Yasa, Permog.Client Server D3MI

Anda mungkin juga menyukai