SlideShare a Scribd company logo
/*
Amelia Sitanggang
11319015
*/
--Execute sql code below to create a product table
CREATE TABLE product
(prod_nr int NOT NULL
CONSTRAINT pk_product PRIMARY KEY (prod_nr),
Name varchar(30) NOT NULL, Price money NOT NULL,
Type varchar(30) NOT NULL)
INSERT product (prod_nr, name, price, type)
VALUES (1, 'tv', 500, 'electronics')
INSERT product (prod_nr, name, price, type)
VALUES (2, 'radio', 100, 'electronics')
INSERT product (prod_nr, name, price, type)
VALUES (3, 'ball', 100, 'sport')
INSERT product (prod_nr, name, price, type)
VALUES (4, 'racket', 200, 'sport')
--result
SELECT * FROM product;
--Exercise 1
--cara I
CREATE FUNCTION dbo.cari_produk
(@NAME VARCHAR(30))
RETURNS VARCHAR(30)
AS BEGIN
DECLARE @FINAL VARCHAR(30)
if @NAME in (select Name From product)
set @FINAL='There are in stock'
else
set @FINAL='There are no in stock'
return @FINAL
END
--result
select dbo.cari_produk('radio')
select dbo.cari_produk('book')
select dbo.cari_produk('tv')
terdapat 2 cara yang dapat saya temukan dalam exercise ini. Dalam cara I, kita mendifine sebuah nama function
menggunakan default Schema dbo.cari_produk. Dengan memberiinput parameter @NAME dengan tipe data
VARCHAR(30). Kemudian kita RETURNS VARCHAR (30). Artinya fungsi itu akan mengembalikan nilai dengan tipe
data VARCHAR. Setelah itu kita buat dua kondisi dimana kondisi pertama kita set dengan input parameter
@FINAL dimana select nama dari daftar produk sesuai dengan inputan user, sesuai dengan daftar , maka akan
diberikan alert “There are in stock”. Jika kondisi nya tidak sesuai dengan daftar produk (user menginput nama
lain selain daftar produk), maka alert yang keluar “There are not stock”.
--cara II
CREATE FUNCTION stok_barang
(
@productName VARCHAR(255)
)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @pesan VARCHAR(255)
IF EXISTS (SELECT * FROM product WHERE Name = @productName)
BEGIN
SET @pesan = 'There are ' + rtrim(@productName) + ' in Stock'
END
ELSE
BEGIN
SET @pesan = 'There are no ' + rtrim(@productName) + ' in Stock'
END
RETURN @pesan
END
--result
SELECT dbo.stok_barang('sepatu');
SELECT dbo.stok_barang('tv');
SELECT dbo.stok_barang('ketumbar');
Pada cara II ini sama seperti diatas yaitu terlebih dahulu mendefine nama function yaitu stok_barang, kemudian
membuat inputan parameter dengan nama @roductName dengan tipe data VARCHAR(255). Kemudian kita
RETURNS VARCHAR(255). Artinya fungsi itu akan mengembalikan nilai dengan tipe data VARCHAR. Disini saya
menggunakan BEGIN dan blok END dengan 2 kondisi, dimana jika inputan user terdaftar dalam daftar product
yang sesuai maka akan ditampilkan alert dengan pesan There are + menggunakan rtrim(@productName) + “in
Stock”. Artinya jika apabila parameter yang di input user berada dalam daftar stok product maka akan
ditampilkan alert bahwa parameter tersebut berada dalam daftar, jika parameter yang diinput user tidak berada
dalam daftar maka akan menampilkan alert bahwa barang tersebut tidak berada dalam daftar stok.
--Exercise 2
--cara I
CREATE FUNCTION AVERAGE_PRICE_STOK
(@harga varchar(100))
RETURNS VARCHAR(100)
AS BEGIN
DECLARE @FINAL VARCHAR(100)
declare @productprice float = (select AVG(Price) from product)
if @harga < @productprice
set @FINAL='The average price of product smaller than ' +@harga
else
set @FINAL='The average price of product greater than ' +@harga
return @FINAL
END
--RESULT
SELECT dbo.AVERAGE_PRICE_STOK(100)
SELECT dbo.AVERAGE_PRICE_STOK(150)
SELECT dbo.AVERAGE_PRICE_STOK(400)
Pada syntax diatas sama dengan sebelumnya yaitu terlebih dahulu mendefine nama function dan menginput
nama parameter diikuti dengan tipe data nya. Pada exercise 2 ini diminta yaitu Buat fungsi dengan parameter
input numerik. Berdasarkan masukan ini, fungsinya harus kembalikan atau cetak pesan sepertiini: ‘harga rata-
rata produk olahraga lebih besar atau sama atau kurang dari (nilai input) 'jika itu terjadi dalam database. Maka
kita perlu mendeklarasikan nama parameter @FINAL dengan tipe data VARCHAR(100) kemudian
mendeklarasikan lagi inputan parameter dengan nama @productprice dengan tipe data float. Disini kita
excecute select AVG(Price) from product dengan membuat kondisi dimana jika parameter dengan nama
@harga < @productprice maka alert yang ditampilkan adalah “The average price of product smaller” dengan
parameter @harga sebelumnya. Jika kondisi tidak memenuhikondisi pertama maka akan dilanjutkan ke kondisi
kedua dengan menampilkan alert “The average price of product greater”. Dalam result nantinya jika user
menginput parameter misalkan 100,parameter tersebut akan di excecusi ke kondiis pertama, jika memenuhi
kondisi pertama maka akan ditampilkan alert dimana parameter 100 memang lebih kecil dari 150. Sebelumnya
500 sudah merupakan inputan defaultpada syntax sebelumnya.
--cara II
CREATE FUNCTION AVERAGE_PRICE_2 (@price INT)
RETURNS VARCHAR (100)
AS
BEGIN
DECLARE @batas INT
SET @batas = (SELECT AVG(price) AS avg_price FROM product WHERE Type = 'sports')
IF (@price < @batas)
RETURN ('The average price of sports product is greater than 100')
ELSE IF (@price = @batas)
RETURN ('The average price of sports product is equal 150')
ELSE
RETURN ('The average price of sports product is less than 400')
RETURN CAST(@price AS VARCHAR(100))
END
GO
-- RESULT
SELECT dbo.AVERAGE_PRICE_2(100)
SELECT dbo.AVERAGE_PRICE_2(150)
SELECT dbo.AVERAGE_PRICE_2(400)
Cara kedua ini sama seperti sebelumnya, hanya saja dalam syntax ini berisi 3 kondisi dimana pada kondisi I yaitu
jika @price < @batas akan mengeluarkan alert : 'The average price of sports product is greater than 100' dan
pada kondisi II yaitu (@price = @batas), jika kondisi ini memenuhi akan mengeluarkan alert: 'The average price
of sports product is equal 150'. Pada kondisi trakhir yaitu dimana jika inputan user tidak memenuhi kondisi
sebelumnya maka akan ditampilkan alert: 'The average price of sports product is less than 400'.
---Exercise 3
CREATE FUNCTION UBAH_HARGA (@input MONEY)
RETURNS @tablee TABLE (prod_id SMALLINT, price INT) AS
BEGIN
DECLARE @temp INT, @a INT, @b int, @loop INT, @percent MONEY
SET @percent = (SELECT AVG(Price) FROM product)
SET @a = 1
SET @loop = 1
SET @b = (SELECT COUNT(*) FROM product)
WHILE @a <= @b
BEGIN
INSERT INTO @tablee
SELECT prod_nr, Price FROM product WHERE prod_nr = @a
SET @a += 1
END
SET @temp = (SELECT AVG(price) FROM @tablee)
WHILE (@temp) < @input
BEGIN
UPDATE @tablee SET price += (price * 10 / 100)
SET @temp = (SELECT AVG(price) FROM @tablee)
END
RETURN
END
SELECT * FROM product
SELECT AVG(price) AS AVG FROM product
SELECT * FROM UBAH_HARGA (500)
SELECT AVG(price) AS AVG FROM UBAH_HARGA (500)
Syntax diatas berfungsi Buat fungsi untuk memperbarui harga semua catatan dalam produk tabel sebesar 10%
hingga rata-rata harga lebih besar dari 500 (500 ditentukan oleh pengguna melalui parameter input).
--Exercise 4
CREATE FUNCTION CheckModulo (@account INT)
RETURNS VARCHAR (150)
AS
BEGIN
DECLARE @result VARCHAR(150)
DECLARE @length INT
DECLARE @lengthNew INT
DECLARE @x INT
DECLARE @jumlah INT
SET @length = len (convert (VARCHAR(100), len(@account), 150))
SET @lengthNew = len (convert (VARCHAR(100),len(@account), 150))
SET @jumlah = 0
SET @x = 0
WHILE (@x < @length)
BEGIN
SET @jumlah = @jumlah + (@lengthNew * convert(INT, substring(convert
(VARCHAR(50),@account, 150),@x,1),150))
SET @x = @x + 1
SET @lengthNew = @lengthNew - 1
IF((@jumlah % 11) = 0)
SET @result = 'valid'
ELSE
SET @result = 'not valid'
END
RETURN @result
END
--result
PRINT dbo.CheckModulo(972428577)
PRINT dbo.CheckModulo(716438439)
PRINT dbo.CheckModulo(123456789)
PRINT dbo.CheckModulo(098765432)
Syntax diatas berfungsi sebagai membuat tabel untuk menyimpan account dengan menambahkan dan
mencoba memasukkan data ke dalam tabel.
--Exercise 5
CREATE FUNCTION fnTable_Sunday
(
@dateFrom DATETIME,
@dateTo DATETIME
)
RETURNS @tblSunday TABLE (number SMALLINT , date DATETIME)
AS
BEGIN
DECLARE @n INT
SET @n = 1
WHILE(@dateFrom < @dateTo)
BEGIN
INSERT @tblSunday (number, date)
SELECT @n, @dateFrom
WHERE DATENAME(dw, @dateFrom) IN ('Sunday')
SET @dateFrom = DATEADD(day, 1, @dateFrom)
IF(EXISTS(SELECT * FROM @tblSunday WHERE number = @n))
SET @n = @n + 1
END
RETURN
END
--RESULT
SELECT * FROM dbo.fnTable_Sunday('2008-03-08', '2008-05-09')
Pada syntax diatas berfungsi untuk Yang mengembalikan tanggal semua minggu antara @dateFrom dan
@dateTo dalam tabel dengan
nomor kolom dan Minggu. Pertama kali kita deklarasikan nama function, kemudian kita beri2 inputan
parameter dengan nama @dateFrom DATETIME dan @dateTo DATETIME. Kemudian kita RETURNS @tblSunday
TABLE (number SMALLINT , date DATETIME) yang artinya kita akan mengembalikan data dalam bentuk tabel
dengan tipe data number sebagai SMALLINT, dan date sebagai DATETIME. Setelah itu, kita menggunakan BEGIN
dan blok END dimana kita akan menyatakan sebuah kondisi, yaitu dengan mendeklarasikan inputan parameter
dengan nama @n = 1. Membuat sebuah statement while dimana (@dateFrom < @dateTo), akan mnginsert
parameter @tblsunday dengan parameter number, dan date yaitu select dari @n dan @datefrom , untuk
mengambil tanggal,bulan, tahun, waktu, dan number dalam tabel yang diset sebagai @date. Tabel yang
dihasilkan yaitu dimana 09-maret-2008 itu merupakan hari Sunday, begitupun dengan tanggal 16-03-2008
merupakan hari Sunday, dan selanjutnya sampai number 9, yaitu dari rentang @datefrom ke @dateTo.

More Related Content

Similar to 015 function

08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
quiztugasujian
 
Affirmation App.pdf
Affirmation App.pdfAffirmation App.pdf
Affirmation App.pdf
AryBudiWarsito1
 
Pemrograman Basis Data "Trigger"
Pemrograman Basis Data "Trigger"Pemrograman Basis Data "Trigger"
Pemrograman Basis Data "Trigger"Opik Oenk
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBO
setyadi_s
 
filter data pada datatables server side 5 menggunakan yajra laravel adminlte
filter data pada datatables server side 5 menggunakan yajra laravel adminltefilter data pada datatables server side 5 menggunakan yajra laravel adminlte
filter data pada datatables server side 5 menggunakan yajra laravel adminlte
Adi Nata
 
Prak05 sbd 24010311130069
Prak05 sbd 24010311130069Prak05 sbd 24010311130069
Prak05 sbd 24010311130069sandy_n
 
Membuat Form tambah dan update barang
Membuat Form tambah dan update barangMembuat Form tambah dan update barang
Membuat Form tambah dan update barang
Farichah Riha
 
PostgreSQL Stored-procedure
PostgreSQL Stored-procedurePostgreSQL Stored-procedure
PostgreSQL Stored-procedureAmmar Shadiq
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array
087dwi
 
Materi my sql part 5
Materi my sql part 5Materi my sql part 5
Materi my sql part 5
Amar Senjaku Ofdetraisar
 
Modul 8&amp;9 maret 2013
Modul 8&amp;9 maret 2013Modul 8&amp;9 maret 2013
Modul 8&amp;9 maret 2013
Muhammad Syafriansyah
 

Similar to 015 function (12)

08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
08.-Basis-Data-Lanjut-Procedure-Function-dan-Trigger.pdf
 
Affirmation App.pdf
Affirmation App.pdfAffirmation App.pdf
Affirmation App.pdf
 
Pemrograman Basis Data "Trigger"
Pemrograman Basis Data "Trigger"Pemrograman Basis Data "Trigger"
Pemrograman Basis Data "Trigger"
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBO
 
filter data pada datatables server side 5 menggunakan yajra laravel adminlte
filter data pada datatables server side 5 menggunakan yajra laravel adminltefilter data pada datatables server side 5 menggunakan yajra laravel adminlte
filter data pada datatables server side 5 menggunakan yajra laravel adminlte
 
Prak05 sbd 24010311130069
Prak05 sbd 24010311130069Prak05 sbd 24010311130069
Prak05 sbd 24010311130069
 
Bab. 7
Bab. 7Bab. 7
Bab. 7
 
Membuat Form tambah dan update barang
Membuat Form tambah dan update barangMembuat Form tambah dan update barang
Membuat Form tambah dan update barang
 
PostgreSQL Stored-procedure
PostgreSQL Stored-procedurePostgreSQL Stored-procedure
PostgreSQL Stored-procedure
 
Bab ii keg pembel 6 array
Bab ii keg pembel 6  arrayBab ii keg pembel 6  array
Bab ii keg pembel 6 array
 
Materi my sql part 5
Materi my sql part 5Materi my sql part 5
Materi my sql part 5
 
Modul 8&amp;9 maret 2013
Modul 8&amp;9 maret 2013Modul 8&amp;9 maret 2013
Modul 8&amp;9 maret 2013
 

Recently uploaded

penjelasan tentang tugas dan wewenang pkd
penjelasan tentang tugas dan wewenang pkdpenjelasan tentang tugas dan wewenang pkd
penjelasan tentang tugas dan wewenang pkd
jaya35ml2
 
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagjaPi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
agusmulyadi08
 
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdfNUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
DataSupriatna
 
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
widyakusuma99
 
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
agusmulyadi08
 
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdfRHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
asyi1
 
Kisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SDKisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SD
denunugraha
 
Koneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya PositifKoneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya Positif
Rima98947
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
junarpudin36
 
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
arianferdana
 
Kisi-kisi soal pai kelas 7 genap 2024.docx
Kisi-kisi soal pai kelas 7 genap 2024.docxKisi-kisi soal pai kelas 7 genap 2024.docx
Kisi-kisi soal pai kelas 7 genap 2024.docx
irawan1978
 
PPT Observasi Praktik Kinerja PMM SD pdf
PPT Observasi Praktik Kinerja PMM SD pdfPPT Observasi Praktik Kinerja PMM SD pdf
PPT Observasi Praktik Kinerja PMM SD pdf
safitriana935
 
Diseminasi Budaya Positif Lucy Kristina S.pptx
Diseminasi Budaya Positif Lucy Kristina S.pptxDiseminasi Budaya Positif Lucy Kristina S.pptx
Diseminasi Budaya Positif Lucy Kristina S.pptx
LucyKristinaS
 
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdfLK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
UditGheozi2
 
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptxKarier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
adolfnuhujanan101
 
Sebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
Sebuah buku foto yang berjudul Lensa Kampung Ondel-OndelSebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
Sebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
ferrydmn1999
 
ppt landasan pendidikan Alat alat pendidikan PAI 9_
ppt landasan pendidikan Alat alat pendidikan PAI 9_ppt landasan pendidikan Alat alat pendidikan PAI 9_
ppt landasan pendidikan Alat alat pendidikan PAI 9_
setiatinambunan
 
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docxRUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
kinayaptr30
 
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrinPatofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
rohman85
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
Indah106914
 

Recently uploaded (20)

penjelasan tentang tugas dan wewenang pkd
penjelasan tentang tugas dan wewenang pkdpenjelasan tentang tugas dan wewenang pkd
penjelasan tentang tugas dan wewenang pkd
 
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagjaPi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
Pi-2 AGUS MULYADI. S.Pd (3).pptx visi giru penggerak dan prakrsa perubahan bagja
 
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdfNUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
NUMERASI KOMPETENSI PENDIDIK TAHAP CAKAP DAN MAHIR.pdf
 
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
LAPORAN TUGAS TAMBAHAN PEMBINA PRAMUKA..
 
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
 
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdfRHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
RHK Jabatan Kep Sekolah dan Bukti Dukung.pdf
 
Kisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SDKisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SD
 
Koneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya PositifKoneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya Positif
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
 
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
 
Kisi-kisi soal pai kelas 7 genap 2024.docx
Kisi-kisi soal pai kelas 7 genap 2024.docxKisi-kisi soal pai kelas 7 genap 2024.docx
Kisi-kisi soal pai kelas 7 genap 2024.docx
 
PPT Observasi Praktik Kinerja PMM SD pdf
PPT Observasi Praktik Kinerja PMM SD pdfPPT Observasi Praktik Kinerja PMM SD pdf
PPT Observasi Praktik Kinerja PMM SD pdf
 
Diseminasi Budaya Positif Lucy Kristina S.pptx
Diseminasi Budaya Positif Lucy Kristina S.pptxDiseminasi Budaya Positif Lucy Kristina S.pptx
Diseminasi Budaya Positif Lucy Kristina S.pptx
 
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdfLK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
LK 1 - 5T Keputusan Berdampak PERMATA BUNDA.pdf
 
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptxKarier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
 
Sebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
Sebuah buku foto yang berjudul Lensa Kampung Ondel-OndelSebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
Sebuah buku foto yang berjudul Lensa Kampung Ondel-Ondel
 
ppt landasan pendidikan Alat alat pendidikan PAI 9_
ppt landasan pendidikan Alat alat pendidikan PAI 9_ppt landasan pendidikan Alat alat pendidikan PAI 9_
ppt landasan pendidikan Alat alat pendidikan PAI 9_
 
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docxRUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
RUBRIK OBSERVASI KINERJA KEPALA SEKOLAH.docx
 
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrinPatofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
 

015 function

  • 1. /* Amelia Sitanggang 11319015 */ --Execute sql code below to create a product table CREATE TABLE product (prod_nr int NOT NULL CONSTRAINT pk_product PRIMARY KEY (prod_nr), Name varchar(30) NOT NULL, Price money NOT NULL, Type varchar(30) NOT NULL) INSERT product (prod_nr, name, price, type) VALUES (1, 'tv', 500, 'electronics') INSERT product (prod_nr, name, price, type) VALUES (2, 'radio', 100, 'electronics') INSERT product (prod_nr, name, price, type) VALUES (3, 'ball', 100, 'sport') INSERT product (prod_nr, name, price, type) VALUES (4, 'racket', 200, 'sport') --result SELECT * FROM product; --Exercise 1 --cara I CREATE FUNCTION dbo.cari_produk (@NAME VARCHAR(30)) RETURNS VARCHAR(30) AS BEGIN DECLARE @FINAL VARCHAR(30) if @NAME in (select Name From product) set @FINAL='There are in stock' else set @FINAL='There are no in stock' return @FINAL END --result select dbo.cari_produk('radio')
  • 2. select dbo.cari_produk('book') select dbo.cari_produk('tv') terdapat 2 cara yang dapat saya temukan dalam exercise ini. Dalam cara I, kita mendifine sebuah nama function menggunakan default Schema dbo.cari_produk. Dengan memberiinput parameter @NAME dengan tipe data VARCHAR(30). Kemudian kita RETURNS VARCHAR (30). Artinya fungsi itu akan mengembalikan nilai dengan tipe data VARCHAR. Setelah itu kita buat dua kondisi dimana kondisi pertama kita set dengan input parameter @FINAL dimana select nama dari daftar produk sesuai dengan inputan user, sesuai dengan daftar , maka akan diberikan alert “There are in stock”. Jika kondisi nya tidak sesuai dengan daftar produk (user menginput nama lain selain daftar produk), maka alert yang keluar “There are not stock”. --cara II CREATE FUNCTION stok_barang ( @productName VARCHAR(255) ) RETURNS VARCHAR(255) AS BEGIN DECLARE @pesan VARCHAR(255) IF EXISTS (SELECT * FROM product WHERE Name = @productName) BEGIN SET @pesan = 'There are ' + rtrim(@productName) + ' in Stock' END ELSE BEGIN SET @pesan = 'There are no ' + rtrim(@productName) + ' in Stock' END RETURN @pesan END --result SELECT dbo.stok_barang('sepatu'); SELECT dbo.stok_barang('tv'); SELECT dbo.stok_barang('ketumbar'); Pada cara II ini sama seperti diatas yaitu terlebih dahulu mendefine nama function yaitu stok_barang, kemudian membuat inputan parameter dengan nama @roductName dengan tipe data VARCHAR(255). Kemudian kita RETURNS VARCHAR(255). Artinya fungsi itu akan mengembalikan nilai dengan tipe data VARCHAR. Disini saya menggunakan BEGIN dan blok END dengan 2 kondisi, dimana jika inputan user terdaftar dalam daftar product yang sesuai maka akan ditampilkan alert dengan pesan There are + menggunakan rtrim(@productName) + “in Stock”. Artinya jika apabila parameter yang di input user berada dalam daftar stok product maka akan ditampilkan alert bahwa parameter tersebut berada dalam daftar, jika parameter yang diinput user tidak berada dalam daftar maka akan menampilkan alert bahwa barang tersebut tidak berada dalam daftar stok.
  • 3. --Exercise 2 --cara I CREATE FUNCTION AVERAGE_PRICE_STOK (@harga varchar(100)) RETURNS VARCHAR(100) AS BEGIN DECLARE @FINAL VARCHAR(100) declare @productprice float = (select AVG(Price) from product) if @harga < @productprice set @FINAL='The average price of product smaller than ' +@harga else set @FINAL='The average price of product greater than ' +@harga return @FINAL END --RESULT SELECT dbo.AVERAGE_PRICE_STOK(100) SELECT dbo.AVERAGE_PRICE_STOK(150) SELECT dbo.AVERAGE_PRICE_STOK(400) Pada syntax diatas sama dengan sebelumnya yaitu terlebih dahulu mendefine nama function dan menginput nama parameter diikuti dengan tipe data nya. Pada exercise 2 ini diminta yaitu Buat fungsi dengan parameter input numerik. Berdasarkan masukan ini, fungsinya harus kembalikan atau cetak pesan sepertiini: ‘harga rata- rata produk olahraga lebih besar atau sama atau kurang dari (nilai input) 'jika itu terjadi dalam database. Maka kita perlu mendeklarasikan nama parameter @FINAL dengan tipe data VARCHAR(100) kemudian mendeklarasikan lagi inputan parameter dengan nama @productprice dengan tipe data float. Disini kita excecute select AVG(Price) from product dengan membuat kondisi dimana jika parameter dengan nama @harga < @productprice maka alert yang ditampilkan adalah “The average price of product smaller” dengan parameter @harga sebelumnya. Jika kondisi tidak memenuhikondisi pertama maka akan dilanjutkan ke kondisi
  • 4. kedua dengan menampilkan alert “The average price of product greater”. Dalam result nantinya jika user menginput parameter misalkan 100,parameter tersebut akan di excecusi ke kondiis pertama, jika memenuhi kondisi pertama maka akan ditampilkan alert dimana parameter 100 memang lebih kecil dari 150. Sebelumnya 500 sudah merupakan inputan defaultpada syntax sebelumnya. --cara II CREATE FUNCTION AVERAGE_PRICE_2 (@price INT) RETURNS VARCHAR (100) AS BEGIN DECLARE @batas INT SET @batas = (SELECT AVG(price) AS avg_price FROM product WHERE Type = 'sports') IF (@price < @batas) RETURN ('The average price of sports product is greater than 100') ELSE IF (@price = @batas) RETURN ('The average price of sports product is equal 150') ELSE RETURN ('The average price of sports product is less than 400') RETURN CAST(@price AS VARCHAR(100)) END GO -- RESULT SELECT dbo.AVERAGE_PRICE_2(100) SELECT dbo.AVERAGE_PRICE_2(150) SELECT dbo.AVERAGE_PRICE_2(400) Cara kedua ini sama seperti sebelumnya, hanya saja dalam syntax ini berisi 3 kondisi dimana pada kondisi I yaitu jika @price < @batas akan mengeluarkan alert : 'The average price of sports product is greater than 100' dan pada kondisi II yaitu (@price = @batas), jika kondisi ini memenuhi akan mengeluarkan alert: 'The average price of sports product is equal 150'. Pada kondisi trakhir yaitu dimana jika inputan user tidak memenuhi kondisi sebelumnya maka akan ditampilkan alert: 'The average price of sports product is less than 400'. ---Exercise 3 CREATE FUNCTION UBAH_HARGA (@input MONEY) RETURNS @tablee TABLE (prod_id SMALLINT, price INT) AS BEGIN DECLARE @temp INT, @a INT, @b int, @loop INT, @percent MONEY SET @percent = (SELECT AVG(Price) FROM product) SET @a = 1 SET @loop = 1 SET @b = (SELECT COUNT(*) FROM product) WHILE @a <= @b BEGIN INSERT INTO @tablee
  • 5. SELECT prod_nr, Price FROM product WHERE prod_nr = @a SET @a += 1 END SET @temp = (SELECT AVG(price) FROM @tablee) WHILE (@temp) < @input BEGIN UPDATE @tablee SET price += (price * 10 / 100) SET @temp = (SELECT AVG(price) FROM @tablee) END RETURN END SELECT * FROM product SELECT AVG(price) AS AVG FROM product SELECT * FROM UBAH_HARGA (500) SELECT AVG(price) AS AVG FROM UBAH_HARGA (500) Syntax diatas berfungsi Buat fungsi untuk memperbarui harga semua catatan dalam produk tabel sebesar 10% hingga rata-rata harga lebih besar dari 500 (500 ditentukan oleh pengguna melalui parameter input). --Exercise 4 CREATE FUNCTION CheckModulo (@account INT) RETURNS VARCHAR (150) AS BEGIN DECLARE @result VARCHAR(150) DECLARE @length INT DECLARE @lengthNew INT DECLARE @x INT DECLARE @jumlah INT SET @length = len (convert (VARCHAR(100), len(@account), 150)) SET @lengthNew = len (convert (VARCHAR(100),len(@account), 150)) SET @jumlah = 0 SET @x = 0 WHILE (@x < @length) BEGIN SET @jumlah = @jumlah + (@lengthNew * convert(INT, substring(convert (VARCHAR(50),@account, 150),@x,1),150)) SET @x = @x + 1 SET @lengthNew = @lengthNew - 1
  • 6. IF((@jumlah % 11) = 0) SET @result = 'valid' ELSE SET @result = 'not valid' END RETURN @result END --result PRINT dbo.CheckModulo(972428577) PRINT dbo.CheckModulo(716438439) PRINT dbo.CheckModulo(123456789) PRINT dbo.CheckModulo(098765432) Syntax diatas berfungsi sebagai membuat tabel untuk menyimpan account dengan menambahkan dan mencoba memasukkan data ke dalam tabel. --Exercise 5 CREATE FUNCTION fnTable_Sunday ( @dateFrom DATETIME, @dateTo DATETIME ) RETURNS @tblSunday TABLE (number SMALLINT , date DATETIME) AS BEGIN DECLARE @n INT SET @n = 1 WHILE(@dateFrom < @dateTo) BEGIN INSERT @tblSunday (number, date) SELECT @n, @dateFrom WHERE DATENAME(dw, @dateFrom) IN ('Sunday') SET @dateFrom = DATEADD(day, 1, @dateFrom) IF(EXISTS(SELECT * FROM @tblSunday WHERE number = @n)) SET @n = @n + 1 END RETURN END --RESULT SELECT * FROM dbo.fnTable_Sunday('2008-03-08', '2008-05-09')
  • 7. Pada syntax diatas berfungsi untuk Yang mengembalikan tanggal semua minggu antara @dateFrom dan @dateTo dalam tabel dengan nomor kolom dan Minggu. Pertama kali kita deklarasikan nama function, kemudian kita beri2 inputan parameter dengan nama @dateFrom DATETIME dan @dateTo DATETIME. Kemudian kita RETURNS @tblSunday TABLE (number SMALLINT , date DATETIME) yang artinya kita akan mengembalikan data dalam bentuk tabel dengan tipe data number sebagai SMALLINT, dan date sebagai DATETIME. Setelah itu, kita menggunakan BEGIN dan blok END dimana kita akan menyatakan sebuah kondisi, yaitu dengan mendeklarasikan inputan parameter dengan nama @n = 1. Membuat sebuah statement while dimana (@dateFrom < @dateTo), akan mnginsert parameter @tblsunday dengan parameter number, dan date yaitu select dari @n dan @datefrom , untuk mengambil tanggal,bulan, tahun, waktu, dan number dalam tabel yang diset sebagai @date. Tabel yang dihasilkan yaitu dimana 09-maret-2008 itu merupakan hari Sunday, begitupun dengan tanggal 16-03-2008 merupakan hari Sunday, dan selanjutnya sampai number 9, yaitu dari rentang @datefrom ke @dateTo.