Menu
Pasang iklan SEO disini Murah, 25000 setahun dan dapatkan Trafik setiap harinya

Mengoperasikan Bahasa Pemrograman Data Deskripsi (SQL) Lanjut TIK.PR03.002.01

May
10
2015
by : Bupeko. Posted in : blog

MATERI PELATIHAN BERBASIS KOMPETENSI

SEKTOR TELEMATIKA

SUB SEKTOR PROGRAMMER KOMPUTER

 

 

 

MENGOPERASIKAN BAHASA PEMROGRAMAN DATA DESKRIPSI (SQL) LANJUT

TIK.PR03.002.01

 

 

 

 

 

 

 

 

BUKU PENILAIAN

 

 

 

 

 

 

 

DEPARTEMEN TENAGA KERJA DAN TRANSMIGRASI R.I.

DIREKTORAT JENDERAL PEMBINAAN PELATIHAN DAN PRODUKTIVITAS

Jl. Jend. Gatot Subroto Kav.51 Lt.7.B Jakarta Selatan

 

 

 

DAFTAR ISI

 

Daftar Isi…………………………………………………………………………………………….      1

 

BAB I       KONSEP PENILAIAN………………………………………………………………..        2

1.1   Bagaimana Instruktur Akan Menilai………………………………………. 2

1.2   Tipe Penilaian………………………………………………………………….        2

 

BAB II     PELAKSANAAN PENILAIAN………………………………………………………..         4

2.1   Kunci Jawaban Tugas Teori………………………………………………..  4

2.2   Daftar Cek Unjuk Kerja (Praktik)………………………………………….  8

2.3   Check List Teori dan Praktek……………………………………………… 26

 

Lembar Penilaian………………………………………………………………………………..  27

 

 

 

 

 

 

 

 

 

BAB I

KONSEP PENILAIAN

 

 

1.1.          Bagaimana Instruktur akan Menilai

 

Dalam Sistem Berbasis Kompetensi, penilai akan mengumpulkan bukti dan membuat pertimbangan mengenai pengetahuan, pemahaman dan unjuk kerja tugas-tugas Anda dan sikap Anda terhadap pekerjaan. Anda akan dinilai untuk menentukan apakah Anda telah mencapai kompetensi sesuai dengan standar yang dijelaskan dalam Kriteria Unjuk Kerja.

 

Pada pelatihan berdasarkan kompetensi, pendekatan yang banyak digunakan untuk penilaian adalah “Penilaian berdasarkan criteria/Criterion-Referenced Assessment”. Pendekatan ini mengukur unjuk kerja Anda terhadap sejumlah standar. Standar yang digunakan dijelaskan dalam Kriteria Unjuk Kerja.

Penilaian dapat dilaksanakan dengan tujuan sebagai bantuan dan dukungan belajar. Tipe penilaian ini adalah formatif dan merupakan proses yang sedang berjalan. Penilaian juga dapat dilaksanakan untuk menentukan apakah Anda telah mencapai hasil program belajar (contohnya pencapaian kompetensi dalam Unit). Tipe penilaian ini adalah sumatif dan merupakan penilaian akhir.

 

Penilaian dapat dilaksanakan di industri (ditempat kerja) atau dilembaga pelatihan (diluar tempat kerja). Jika memungkinkan, sebaiknya penilaian dilaksanakan ditempat kerja sehingga penilai dapat mengamati Anda melakukan kegiatan normal ditempat kerja.

 

1.2.          Tipe Penilaian  

 

Penilaian dilakukan dengan 2 jenis ujian, yaitu:

 

 

  1. Tes Tertulis

Test tertulis akan menilai pengetahuan Anda dan pemahaman konsep dan prinsip yang merupakan dasar unjuk kerja tugas-tugas Anda. Tes tertulis biasanya berupa seri pertanyaan pilihan ganda atau beberapa bentuk tes tertulis obyektif lainnya, yaitu tes dimana setiap pertanyaan memiliki satu jawaban benar.

  1. Tes Unjuk Kerja

Test unjuk kerja akan menilai kompetensi Anda dalam menampilkan tugas-tugas elemen terhadap standar yang dijelaskan dalam Kriteria Unjuk Kerja. Oleh sebab itu Anda akan menerapkan pengetahuan dan pemahaman Anda terhadap unjuk kerja tugas-tugas.

 

Penilai biasanya menggunakan daftar cek analisis elemen sebagai pedoman untuk menentukan kompetensi Anda dan akan memberikan umpan balik mengenai unjuk kerja dan jika perlu, merencanakan pelatihan lanjutan jika Anda belum mencapai kompetensi pada usaha/kesempatan pertama.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BAB II

PELAKSANAAN PENILAIAN

 

 

2.1                Kunci Jawaban Tugas Teori

 

1. Perhatikan  pernyataan berikut!

 

CASE

WHEN @X = @Y THEN NULL

ELSE @X

END

 

Cara lain untuk mendefinisikan pernyataan diatas adalah: (KUK 1.1)

   Jawaban  : A (NullIf(@X, @Y)

 

2. Dibawah ini yang merupakan pernyataan DML – SQL adalah: (KUK 1.1)

Jawaban : B (  SELECT …)

 

3. Berikut ini yang tidak termasuk constraint adalah: (KUK 1.1)

    Jawaban : D (Alternate Key)

 

4. Yang merupakan bentuk lain dari check constraint adalah: (KUK 1.1)

Jawaban : C (Rule)

 

5. Perhatikan penggalan pernyataan berikut!

 

CREATE TABLE mtabel (kd_tabel INT)

ALTER TABLE mtabel

ADD CONSTRAINT pk_tabel PRIMARY KEY(kd_tabel)

 

Berikut ini yang merupakan penjelasan yang paling tepat dan dapat disimpulkan dari pernyataan diatas adalah: (KUK 1.1)

 

Jawaban : A (Pernyataan diatas mendefinisikan kd_tabel sebagai primary key pada mtabel yang belum memiliki primary key)

 

6. Dibawah ini yang merupakan flow statement of control adalah: (KUK 2.1)

Jawaban : B (Selection)

 

7. Cara lain untuk melakukan perulangan tanpa menggunakan WHILE adalah dengan perintah: (KUK 2.1)

Jawaban : D (GO TO)

 

8. Dibawah ini, pernyataan dalam SQL Server untuk menginisialisasi nilai 2 pada variabel x adalah: (KUK 2.1)

Jawaban : D (SET @X = 2 dan @X = 2)

 

9. Perhatikan penggalan pernyataan berikut! (KUK 2.4)

…(LEFT(kd,2)=’AA’ OR LEFT(kd,2)=’AB’)

 

Pernyataan berikut yang memiliki arti sama dengan pernyataan diatas adalah:

Jawaban : C (… LEFT(@kd,2) IN (’AB’,’AA’) )

 

10. Tujuan dari pendefinisian DEFAULT constraint adalah: (KUK 1.2)

Jawaban : B (Memberikan nilai default pada data dalam suatu tabel bila data tidak diisi

 

11. Perhatikan pernyataan berikut! (KUK 2.4)

SET @kddepartemen = ’HRD’

SELECT @keterangan=

CASE @kddepartemen

WHEN ’HRD’ THEN ’Human Resource Department’

WHEN ’CSO’ THEN ’Customer Service’

WHEN ’MAR’ THEN ‘Marketing’

PRINT @kddepartemen

 

Jika pernyataan diatas dijalankan , maka hasil yang ditampilkan di layar adalah:

Jawaban : C (HRD)

 

12. Dari pernyataan No. 11 diatas, Jika saya ingin menampilkan ‘Marketing’ maka berikut ini pernyataan yang benar adalah: (KUK 2.2)

Jawaban : A (SET @kddepartemen = ‘MAR’…)

 

13. Perhatikan pernyataan berikut!

 

SET @a = 2

SET @b = 5

PRINT ‘A * B =’ + (@a * @b)

 

Jika pernyataan diatas dijalankan maka hasilnya adalah: (KUK 2.4)

Jawaban : A ( Terjadi Error)

 

14. Kumpulan pernyataan SQL yang dapat digunakan/dijalankan kapan saja untuk melakukan perintah tertentu tanpa harus mendefinisi ulang perintah-perintah setiap diperlukan dinamakan: (KUK 1.1)

Jawaban : B ( Stored Prosedure)

 

15. Untuk membuat prosedur, T-SQL menggunakan perintah: (KUK 1.1)

Jawaban : A (CREATE PROC)

 

16. Fungsi utama dari Instead of Trigger adalah: (KUK 3.1)

Jawaban : B Memperbaharui data di dalam view, yang pada dasarnya memang tidak dapat diperbaharui

 

17. Yang bukan merupakan fungsi cursor adalah: (KUK 2.2)

Jawaban : C (Memindahkan atau mengurutkan data di dalam recordset)

 

 

Perhatikan pernyataan berikut untuk menjawab soal 18 dan 19!

WHILE (@@fetch_status = 0)

BEGIN

FETCH cur_Pegawai INTO @nip, @nama,

@no_ktp, @alamat

END

 

  1. Yang dimaksud WHILE(@@fetch_status = 0) adalah (KUK 2.2)

Jawaban : D (Pernyataan di dalam blok WHILE tidak akan dijalankan bila fetch tidak berhasil mengambil data)

 

19.  Pernyataan berikut yang tidak menjelaskan

 

FETCH cur_Pegawai INTO @nip, @nama,

@no_ktp, @alamat

 

di dalam blok WHILE adalah: (KUK 2.4)

Jawaban : B Pernyataan ini mengisi data posisi cursor saat itu kedalam cursor cur_pegawai

 

20. Berikut ini yang merupakan pernyataan-pernyataan mengenai trigger yang tepat dan benar adalah: (KUK 3.1)

Jawaban : A (Untuk mendefinisikan trigger pada view, kita hanya dapat menggunakan perintah Instead of Trigger )

 

21.  Pernyataan berikut yang menggambarkan transaksi dengan tepat adalah: (KUK 4.1)

Jawaban : C (Hanya melakukan proses terhadap semua perubahan yang terjadi atau tidak sama sekali)

 

22.  Sistem akan selalu berada pada kondisi yang valid meskipun terjadi kegagalan pada sistem merupakan karakteristik transaksi yang dinamakan: (KUK 4.1)

Jawaban : A (durability)

 

  1. Yang dinamakan Logical Unit of Work adalah.. (KUK 1.1)

Jawaban : D ( Transaction )

 

  1. Yang merupakan stored procedure dengan parameter default: (KUK 1.2)

Jawaban : A (CREATE PROC _proc @id CHAR(3) = ‘sha’ AS …)

 

25.  Perhatikan prosedur berikut!

 

BEGIN

– Proses

SET @kdError = @@ERROR

IF (@kdError <> 0) GOTO hError

END

COMMIT TRANSACTION

hError:

ROLLBACK TRANSACTION

RETURN(@kdError)

 

Apa yang terjadi jika prosedur diatas dijalankan? (KUK 4.3)

Jawaban :  B (Data berubah tetapi muncul error)

 

2.2                Kunci Jawaban Tugas Unjuk Kerja

 

Kerjakanlah soal berikut dengan seksama! Tes dilakukan dengan menggunakan aplikasi QueryAnalyzer Microsoft SQL Server

 

Tabel TesKaryawan

 

 

 

 

Tabel TesDepartemen

 

Tabel TesStatusAbsen

 

 

Tabel TesKeteranganAbsensi

 

 

 

Tabel TesAbsensiHeader

 

 

 

Tabel TesAbsensiDetil

 

 

 

 

 

  1. (3) Buatlah sebuah database dengan nama TesK_**** dimana **** adalah nomor tes anda. Lalu buatlah struktur tabel seperti yang Anda lihat pada gambar diatas dengan menggunakan DDL. Gunakan constraint sebagaimana dianggap perlu dan pastikan semua data tidak boleh ada yang bernilai Null. Format cNIP harus seperti yang ditunjukkan dalam gambar. Kemudian isilah tabel yang telah Anda buat sesuai dengan data seperti yang ditunjukkan dalam gambar. (KUK 1.1)

Jawaban :

 

– ***********************************************************

– BUAT DATABASE DAN DEFINISI TABEL

– ***********************************************************

/* Hanya untuk keperluan tes, Hapus database jika sudah ada */

DROP DATABASE TesK_0000

 

/* Buat database : Misalnya nomor tesnya 0000 */

CREATE DATABASE TesK_0000

 

/* Menggunakan database */

USE TesK_0000

 

/* Hanya untuk keperluan tes, Hapus tabel jika sudah ada */

DROP TABLE TesAbsensiDetil

DROP TABLE TesAbsensiHeader

DROP TABLE TesStatusAbsen

DROP TABLE TesKeteranganAbsensi

DROP TABLE TesKaryawan

DROP TABLE TesDepartemen

 

/* Definisi Struktur Tabel TesDepartemen */

CREATE TABLE TesDepartemen

(

iKdDep TINYINT IDENTITY(1,1) PRIMARY KEY,

cDep CHAR(3) NOT NULL,

cKet CHAR(20) NOT NULL,

iMaksKry TINYINT NOT NULL

)

 

/* Isi data ke dalam tabel TesDepartemen */

INSERT TesDepartemen VALUES (‘ADM’, ‘Administrasi’, 2)

INSERT TesDepartemen VALUES (‘HRD’, ‘Personalia’, 2)

INSERT TesDepartemen VALUES (‘MAR’, ‘Pemasaran’, 10)

INSERT TesDepartemen VALUES (‘PUR’, ‘Pembelian’, 1)

INSERT TesDepartemen VALUES (‘CSO’, ‘Pelayanan’, 3)

 

/* Definisi Struktur Tabel TesKaryawan */

CREATE TABLE TesKaryawan

(

cNIP CHAR(6) PRIMARY KEY

CONSTRAINT cekNIP CHECK(cNIP LIKE

‘[0-9][0-9].[0-9][0-9][0-9]‘),

cNama VARCHAR(20) NOT NULL,

cKota CHAR(10) NOT NULL,

iKdDep TINYINT NOT NULL,

mGaji MONEY NOT NULL,

CONSTRAINT fk_dep FOREIGN KEY(iKdDep)

REFERENCES TesDepartemen(iKdDep)

)

 

/* Isi data ke dalam tabel TesKaryawan */

INSERT TesKaryawan

VALUES (’05.001′, ‘Shelly Putri’, ‘Jakarta’, 3, 2200000)

INSERT TesKaryawan

VALUES (’05.002′, ‘Herman Surya’, ‘Medan’, 2, 2500000)

INSERT TesKaryawan

VALUES (’06.001′, ‘Wiroto Diman’, ‘Solo’, 2, 2000000)

INSERT TesKaryawan

VALUES (’06.002′, ‘Zenni Palupi’, ‘Bandung’, 1, 1750000)

INSERT TesKaryawan

VALUES (’06.003′, ‘Deibby Sekar’, ‘Surabaya’, 5, 1500000)

 

INSERT TesKaryawan

VALUES (’07.001′, ‘Timbo Sirait’, ‘Medan’, 3, 1800000)

 

/* Definisi Struktur Tabel TesStatusAbsen */

CREATE TABLE TesStatusAbsen

(

iKdSts TINYINT IDENTITY(1,1) PRIMARY KEY,

cSts VARCHAR(20) NOT NULL

)

 

/* Isi data ke dalam tabel TesStatusAbsen */

INSERT TesStatusAbsen VALUES (‘Hadir’)

INSERT TesStatusAbsen VALUES (‘Sakit’)

INSERT TesStatusAbsen VALUES (‘Izin’)

INSERT TesStatusAbsen VALUES (‘Tanpa Keterangan’)

 

/* Definisi Struktur Tabel TesKeteranganAbsensi */

CREATE TABLE TesKeteranganAbsensi

(

iKet TINYINT IDENTITY(1,1) PRIMARY KEY,

cKet VARCHAR(20) NOT NULL

)

 

/* Isi data ke dalam tabel TesStatusAbsen */

INSERT TesKeteranganAbsensi VALUES (‘Makan Siang’)

INSERT TesKeteranganAbsensi VALUES (‘Izin Keluar’)

 

/* Definisi Struktur Tabel TesAbsensiHeader */

CREATE TABLE TesAbsensiHeader

(

iKd INT IDENTITY(1,1) PRIMARY KEY,

cNIP CHAR(6) NOT NULL,

sdtJamMsk SMALLDATETIME NOT NULL,

iKdSts TINYINT NOT NULL

CONSTRAINT fk_absnh1 FOREIGN KEY(iKdSts)

REFERENCES TesStatusAbsen(iKdSts),

CONSTRAINT fk_absnh2 FOREIGN KEY(cNIP)

REFERENCES TesKaryawan(cNIP)

)

 

/* Definisi Struktur Tabel TesAbsensiDetil */

CREATE TABLE TesAbsensiDetil

(

iKd INT NOT NULL,

cJamKeluar CHAR(8) NOT NULL,

cJamKembali CHAR(8) NOT NULL,

iKet TINYINT NOT NULL,

CONSTRAINT pk_absnd

PRIMARY KEY CLUSTERED(iKd, iKet),

 

CONSTRAINT fk_absnd1 FOREIGN KEY(iKd)

REFERENCES TesAbsensiHeader(iKd),

CONSTRAINT fk_absnd2 FOREIGN KEY(iKet)

REFERENCES TesKeteranganAbsensi(iKet)

)

 

/* Isi data ke dalam tabel TesAbsensiHeader */

INSERT TesAbsensiHeader VALUES (’06.001′, ’6/4/07 07:18:01′, 1)

 

/* Isi data ke dalam tabel TesAbsensiDetil */

INSERT TesAbsensiDetil

VALUES (1, ’11:50:23′, ’13:01:06′, 1)

 

/* Hanya untuk keperluan tes, tampilkan data */

SELECT * FROM TesDepartemen

SELECT * FROM TesKaryawan

SELECT * FROM TesStatusAbsen

SELECT * FROM TesKeteranganAbsensi

SELECT * FROM TesAbsensiHeader

SELECT * FROM TesAbsensiDetil

 

  1. (5) Buatlah stored-procedure untuk mengisi data Departemen dan harus menggunakan penanganan error dan parameter. Cobalah prosedur yang telah Anda buat hanya dengan mengirim 2 parameter : ‘SEC’, ‘Keamanan’ (KUK 1.1, 1.2, 1.3)

 

 

Jawaban :

– ***********************************************************

– BUAT STORED PROCEDURE

– ***********************************************************

/* Hanya untuk keperluan tes, Hapus jika sudah ada */

DROP PROCEDURE proc_dep_baru

 

/* Store Procedure untuk mengisi tabel TesDepartemen */

CREATE PROCEDURE proc_dep_baru

@_cDep CHAR(3), @_cKet CHAR(20), @_iMaksKry TINYINT

AS

DECLARE @iErr INT

INSERT TesDepartemen(cDep, cKet, iMaksKry)

VALUES (@_cDep, @_cKet, @_iMaksKry)

SET @iErr=@@ERROR

IF (@iErr = 0)

RETURN (0)

ELSE

RETURN (@iErr)

 

/* Jalankan procedure untuk mengisi data departemen baru */

EXEC proc_dep_baru ‘SEC’, ‘Keamanan’, 6

 

/* Hanya untuk keperluan tes, lihat apakah proses berhasil */

 

  1. (12) Buatlah stored-procedure untuk mengisi data Karyawan baru dengan menerapkan fungsi cursor untuk memvalidasi data. Bila data yang dimasukkan sudah ada di dalam tabel maka munculkan pesan:

“Maaf, Kode pegawai yang Anda masukkan telah terdaftar”

Jika terjadi kesalahan, maka tampilkan pesan dari sistem. Sedangkan jika berhasil maka tampilkan pesan:

“{nama_karyawan_baru}, Selamat bergabung di PT. Kita”

Setelah Anda membuat prosedur, cobalah dengan mengisi data dengan cNIP yang sudah ada di dalam tabel, mengisi data dengan format cNIP yang salah, dan terakhir mengisi data yang benar-benar baru. (KUK 1.1 – 1.4)

 

 

 

 

 

 

 

Jawaban :

– ***********************************************************

– BUAT CURSOR DI DALAM STORED PROCEDURE

– ***********************************************************

/* Hanya untuk keperluan tes, hapus jika sudah ada */

DROP PROC proc_kry_baru

 

/* Store Procedure untuk mengisi tabel TesKaryawan */

CREATE PROC proc_kry_baru

@_cNIP CHAR(6), @_cNama VARCHAR(20),

@_cKota CHAR(10), @_iKdDep TINYINT,

@_mGaji MONEY

AS

DECLARE @iErr INT

DECLARE @_nip CHAR(6)

DECLARE cur_Kry CURSOR FOR

SELECT tk.cNIP FROM TesKaryawan tk

WHERE tk.cNIP = @_cNIP

OPEN cur_Kry

FETCH cur_Kry INTO @_nip

IF (@@FETCH_STATUS = 0)

BEGIN

PRINT ‘Maaf, Kode Pegawai yang Anda ‘ +

‘masukkan telah terdaftar!’

CLOSE cur_Kry

DEALLOCATE cur_Kry

RETURN(0)

END

CLOSE cur_Kry

DEALLOCATE cur_Kry

INSERT TesKaryawan

VALUES (@_cNIP, @_cNama, @_cKota, @_iKdDep, @_mGaji)

SET @iErr=@@ERROR

IF (@iErr = 0)

BEGIN

PRINT @_cNama +

‘, Selamat bergabung di perusahaan kami!’

RETURN(0)

END

ELSE

RETURN(@iErr)

 

/* Jalankan procedure untuk mengisi data karyawan baru */

/* Tes isi data dengan cNIP yang sama */

EXEC proc_kry_baru ’07.001′, ‘Handi Gunardi’,

‘Lampung’, 6, 1000000

/* Tes isi data dengan format cNIP yang salah */

EXEC proc_kry_baru ’08da01′, ‘Handi Gunardi’,

‘Lampung’, 6, 1000000

/* Tes isi data karyawan baru */

EXEC proc_kry_baru ’07.002′, ‘Handi Gunardi’,

‘Lampung’, 6, 1000000

 

  1. (15) Buatlah insert, update dan delete trigger untuk tabel TesKaryawan. Cek maksimal karyawan pada departemen yang bersangkutan ketika Anda melakukan insert data karyawan baru. Lalu ketika Anda mengupdate gaji karyawan pastikan gaji yang baru lebih besar dari gaji yang lama. Dan terakhir pastikan tidak ada data yang boleh dihapus dari tabel TesKaryawan. Setelah Anda selesai, Cobalah trigger yang telah Anda buat dengan memasukkan data yang salah dan benar. Tampilkan pesan-pesan untuk keberhasilan dan kegagalan proses tersebut misalnya jika proses gagal tampilkan pesan: (KUK 3.1 – 3.3)

“Maaf, Tidak ada lowongan lagi di bagian “ {nama_departemen}

 

 

 

dan jika benar tampilkan pesan :

“Selamat bergabung di bagian “ {nama_departemen}

 

 

 

 

 

 

Jawaban :

 

– ***********************************************************

– BUAT TRIGGER UNTUK INSERT, UPDATE DAN DELETE

– ***********************************************************

/* Insert Trigger untuk tabel TesKaryawan */

CREATE TRIGGER trg_ins_kry ON TesKaryawan FOR INSERT AS

DECLARE @_cNIP CHAR(6)

DECLARE @_iKdDep TINYINT

DECLARE @_cDep CHAR(20)

DECLARE @_iKry INT

DECLARE @_iMaksKry TINYINT

SELECT @_iKdDep = iKdDep FROM INSERTED

SELECT @_cDep = cKet FROM TesDepartemen

WHERE iKdDep = @_iKdDep

SELECT @_iKry = COUNT(*) FROM TesKaryawan

WHERE iKdDep = @_iKdDep

SELECT @_iMaksKry = iMaksKry FROM TesDepartemen

WHERE iKdDep = @_iKdDep

IF (@_iMaksKry – @_iKry) <= 0

BEGIN

PRINT ‘Maaf, Tidak ada lowongan lagi di bagian ‘

+ @_cDep

PRINT ”

SELECT * FROM INSERTED

PRINT ‘Karyawan baru diatas tidak bisa ‘ +

‘ditempatkan di bagian ‘ + @_cDep

ROLLBACK TRANSACTION

END

ELSE

BEGIN

SELECT * FROM INSERTED

PRINT ‘Selamat bergabung di bagian ‘ + @_cDep

PRINT ”

SELECT * FROM TesKaryawan

END

 

/* Tes insert trigger diatas */

/* Tes daftar karyawan ke bagian HRD yang jumlah maksimal

hanya 2 orang dan telah terisi penuh */

EXEC proc_kry_baru ’07.003′, ‘Sumarno Hadi’,

‘Jakarta’, 2, 1800000

/* Tes daftar karyawan ke bagian MAR yang masih memiliki

banyak posisi kosong */

EXEC proc_kry_baru ’07.003′, ‘Nedyo Friska’,

‘Bandung’, 3, 1800000

 

/* Update Trigger untuk tabel TesKaryawan */

CREATE TRIGGER trg_upd_kry on TesKaryawan FOR UPDATE AS

DECLARE @mGajiLama MONEY

DECLARE @mGajiBaru MONEY

SELECT @mGajiLama = mGaji from DELETED

SELECT @mGajiBaru = mGaji from INSERTED

IF @mGajiBaru < @mGajiLama

BEGIN

PRINT ‘Gaji yang baru tidak boleh lebih ‘ +

‘kecil dari gaji yang lama’

PRINT ”

SELECT * FROM INSERTED

PRINT ‘Proses update tidak berhasil’

ROLLBACK TRANSACTION

END

ELSE

BEGIN

PRINT ‘Karyawan dibawah ini:’

PRINT ”

SELECT * FROM DELETED

PRINT ‘mendapatkan kenaikan gaji menjadi:’

PRINT ”

SELECT * FROM INSERTED

END

 

/* Tes update trigger diatas */

/* Tes kurangi gaji karyawan dengan cNIP 05.002 */

UPDATE TesKaryawan SET mGaji = 2000000

WHERE cNIP = ’05.002′

/* Tes naikkan gaji karyawan dengan cNIP 06.003 */

UPDATE TesKaryawan SET mGaji = 1750000

WHERE cNIP = ’06.003′

 

/* Delete Trigger untuk tabel TesKaryawan */

CREATE TRIGGER trg_del_kry on TesKaryawan FOR DELETE AS

DECLARE @_cNIP CHAR(6)

SELECT @_cNIP = cNIP from DELETED

IF @_cNIP IS NOT NULL

 

BEGIN

SELECT * FROM DELETED

PRINT ‘Data karyawan dalam tabel ‘ +

‘TesKaryawan tidak boleh dihapus’

END

ELSE

BEGIN

PRINT ‘Tidak ada karyawan dengan NIP’

+ @_cNIP

ROLLBACK TRANSACTION

END

 

/* Tes delete trigger diatas */

/* Tes hapus karyawan dengan cNIP 09.001 */

DELETE FROM TesKaryawan WHERE cNIP = ’09.001′

/* Tes hapus karyawan dengan cNIP 07.001 */

DELETE FROM TesKaryawan WHERE cNIP = ’07.001′

 

  1. (15) Buatlah sebuah procedure dengan 4 buah parameter yakni NIP, Waktu dan Jam Hadir, Status Absen dan Detil Absensi. Detil Absensi dapat diisi lebih dari satu record dalam sekali proses. Artinya pengisian 1 data pada tabel TesAbsensiHeader sekaligus memungkinkan kita mengisi satu atau lebih data di dalam tabel TesAbsensiDetil hanya dengan sekali menjalankan prosedur. Gunakan prinsip-prinsip transaction untuk menangani absensi karyawan, yakni ketika mengisi data pada tabel TesAbsensiHeader dan TesAbsensiDetil. Buat juga fungsi yang kemudian dapat Anda gunakan untuk menampilkan hasil transaksi secara langsung begitu transaksi di-COMMIT seperti ditunjukkan dalam gambar. (KUK 2.1 – 2.2 & 4.1 – 4.3)

 

 

Jawaban :

– ***********************************************************

– BUAT FUNGSI & TRANSACTION UNTUK PROSES ABSENSI

– ***********************************************************

/* Hanya untuk keperluan tes, hapus jika sudah ada */

DROP FUNCTION f_ctk_hasil

DROP FUNCTION f_ctk_hdr

DROP PROCEDURE proc_absensi

 

/* Funsgi untuk menampilkan keterangan rinci */

CREATE FUNCTION f_ctk_hdr (@_iKd INT)

RETURNS TABLE

AS

RETURN

(

SELECT tah.iKd, tah.cNIP, tk.cNama, td.cKet,

tsa.cSts, tah.sdtJamMsk

FROM TesAbsensiHeader tah

INNER JOIN TesStatusAbsen tsa

ON tah.iKdSts = tsa.iKdSts

INNER JOIN TesKaryawan tk

ON tah.cNIP = tk.cNIP

INNER JOIN TesDepartemen td

ON tk.iKdDep = td.iKdDep

WHERE tah.iKd = @_iKd

)

 

/* Funsgi untuk menampilkan hasil transaksi */

CREATE FUNCTION f_ctk_hasil (@_iKd INT)

RETURNS TABLE

AS

RETURN

(

SELECT tad.iKd, tad.cJamKlr, tad.cJamKmb, tka.cKet

FROM TesAbsensiDetil tad

INNER JOIN TesKeteranganAbsensi tka

ON tad.iKet = tka.iKet

WHERE tad.iKd = @_iKd

)

 

/* Store Procedure untuk memproses absensi karyawan */

CREATE PROCEDURE proc_absensi

@_cNIP CHAR(6), @_sdtJamMsk SMALLDATETIME,

@_iKdSts TINYINT, @_DetAbsn VARCHAR(100)

AS

DECLARE @iErr INT, @_iKd INT

DECLARE @_cSts VARCHAR(20)

– Isi data ke tabel TesAbsensiHeader

SELECT * FROM TesKaryawan WHERE cNIP = @_cNIP

IF @@ROWCOUNT = 0

RETURN(-100) — Tidak ada karyawan dengan NIP ini

SELECT @_cSts = cSts FROM TesStatusAbsen

WHERE iKdSts = @_iKdSts

IF @@ROWCOUNT = 0

RETURN(-101) — Tidak ada status dengan kode ini

BEGIN TRANSACTION

INSERT TesAbsensiHeader(cNIP, sdtJamMsk, iKdSts)

VALUES (@_cNIP, @_sdtJamMsk, @_iKdSts)

SET @iErr = @@ERROR

IF (@iErr <> 0)

BEGIN

ROLLBACK TRANSACTION

RETURN (@iErr)

END

SET @_iKd = @@IDENTITY

– Isi data ke tabel TesAbsensiDetil

– Semua data harus memiliki nilai iKd yang sama

DECLARE @iJlhDetil INT, @iPos INT

SET @iPos = 0

SET @iJlhDetil = CEILING(Len(@_DetAbsn)/20)

DECLARE @_iKet TINYINT

DECLARE @_cJamKlr CHAR(8), @_cJamKmb CHAR(8)

WHILE @iPos <= @iJlhDetil

BEGIN

SET @_cJamKlr = SUBSTRING(@_DetAbsn, @iPos*20 + 1, 8)

 

SET @_cJamKmb = SUBSTRING(@_DetAbsn, @iPos*20 + 10, 8)

SET @_iKet = SUBSTRING(@_DetAbsn, @iPos*20 + 18, 2)

SET @iPos = @iPos + 1

INSERT TesAbsensiDetil(iKd, iKet, cJamKlr, cJamKmb)

VALUES (@_iKd, @_iKet, @_cJamKlr, @_cJamKmb)

SET @iErr = @@ERROR

IF (@iErr <> 0) GOTO hErr

END

COMMIT TRANSACTION

SELECT * FROM f_ctk_hdr(@_iKd)

SELECT * FROM f_ctk_hasil(@_iKd)

RETURN (0)

hErr:

ROLLBACK TRANSACTION

RETURN(@iErr)

 

/* Tes prosedur diatas */

EXEC proc_absensi ’05.001′, ’2007-06-04 07:28:29′,

1, ’12:05:11 12:45:58 1 14:01:20 15:26:51 2 ‘

 

 

 

 

 

 

 

2.3 Check List Teori dan Praktek

Semua kesalahan harus diperbaiki terlebih dahulu sebelum ditandatangani

 

Penguasaan Bahan

Ya

Apakah semua pembahasan teori sudah diikuti dan dipelajari?  
Apakah peserta pelatihan mampu membedakan antara DDL dan DML?  
Apakah peserta pelatihan mampu menggunakan DDL/DML untuk membuat suatu sistem basis data?  
Apakah peserta pelatihan mampu merancang basis data sesuai dengan kebutuhan atas masalah yang dijumpai?  
Apakah peserta pelatihan mampu menjelaskan bagaimana hubungan antar tabel dalam basis data ?  
Apakah peserta pelatihan mengerti bagaimana melakukan validasi data dengan menggunakan constraint maupun prosedur?  
Apakah peserta pelatihan mampu menggunakan fungsi-fungsi yang ada untuk mendukung basis data yang dibuat ?  
Apakah perserta pelatihan mampu menjelaskan tentang fungsi, prosedur, rule dan cursor?  
Apakah peserta pelatihan mampu menjelaskan bagaimana mekanisme sebuah trigger?  
Apakah peserta pelatihan memahami konsep transaksi dalam basis data?  
Apakah peserta pelatihan mampu menerapkan teori kedalam praktek?  
Apakah peserta pelatihan sudah mengumpulkan, menganalisa, dan merancang basis data menurut prosedur dan kriteria yang sudah ditentukan ?  
Apakah peserta pelatihan sudah memberikan ide dan informasi yang tepat sesuai dengan  standar  yang dibutuhkan  
Apakah peserta pelatihan telah merencanakan dan menyusun kegiatan-kegiatan yang tujuannya telah  diperiksa oleh pelatih  
Apakah peserta pelatihan menggunakan sumber-sumber yang menguntungkan untuk mendapatkan informasi yang dibutuhkan untuk mencapai tujuan  

 

 

 

 

LEMBAR PENILAIAN

 

Tanggal : ……………………………….

 

 

Peserta pelatihan telah dinilai

 

 

 

 

 

KOPMPETEN                                              BELUM KOMPETEN

 

 

 

 

Nama Peserta Pelatihan                              Nama Penilai

 

 

 

 

……………………………..                            ……………………………..

Tanda Tangan                                          Tanda Tangan

 

 

 

 

Komentar / Saran

 

…………………………………………………………………………………………………………..

 

…………………………………………………………………………………………………………..

 

……………………………………………………………………………………………………………

 

…………………………………………………………………………………………………………..

 

……………………………………………………………………………………………………………

 

……………………………………………………………………………………………………………

 

……………………………………………………………………………………………………………

 

……………………………………………………………………………………………………………

 

Testimoni

artikel lainnya Mengoperasikan Bahasa Pemrograman Data Deskripsi (SQL) Lanjut TIK.PR03.002.01

Wednesday 5 November 2014 | blog

No. DE-128/II/13 6 Februari 2013 Ir. Turido Broto Senior Project Manager PT Bina Reka Nusa Rasuna…

Monday 19 January 2015 | blog

Misi perusahaan, Pengertian , Bagian dari perencanaan strategik yang diketahui masyarakat banyak dan bahkan menjadi milik…

Saturday 27 June 2015 | blog

  MODUL PELATIHAN BERBASIS KOMPETENSI SUB BIDANG METODOLOGI PELATIHAN KERJA            …

Saturday 18 February 2012 | blog

fitur google mail Bab 9 Perkembangan Masyarakat Indonesia pada masa Hindu – Buddha Standar kompetensi 5.…