--function fMhs untuk mengambil data mahasiswa berdasarkan kota
create function fMhs (@kota as varchar(50))
returns table
as
return (select nim,nama,alamat,kota,jns_kelamin,sts_nikah
from mahasiswa
where kota=@kota);
--menghapus function fMhs
drop function fMhs
--function fCetak untuk mencetak nama mahasiswa dan nim mahasiswa
create function fCetak (@nim as char(11), @nama as varchar(100))
returns varchar(100)
as
begin
return ' ' +@nama + '(' + @nim + ')'
end;
--menghapus function fCetak
drop function fCetak
--function fHitungMhs untuk menghitung jumlah mahasiswa
create function fHitungMhs (@kota as varchar(50))
returns numeric
as
begin
return (select count(*)
from mahasiswa
where kota = @kota);
end;
--menghapus function fCetak
drop function fHitungMhs
-- Jawaban Latihan Pertemuan 4 PBD
--deklarasi cursor cKota (jangan lupa deallocatenya juga)
declare cKota cursor for
select distinct kota from mahasiswa;
--deklarasi variabel kota untuk menampung data kota
declare @kota as varchar(50);
--open cursor cKota
open cKota;
--transfer data kota ke dalam variabel kota
fetch next from cKota into @kota;
--looping data kota
while @@fetch_status = 0
begin
--cetak data kota
print 'Kota : '+@kota;
--## ADA cursor cMhs, sehingga terdapat cursor di dalam cursor ##
--deklarasi cursor cKota (jangan lupa deallocatenya juga)
declare cMhs cursor for
select nim, nama from dbo.fMhs (@kota);
--deklarasi variabel kota untuk menampung data kota
declare @nim as char(11),
@nama as varchar(100);
--open cursor cMhs
open cMhs;
--transfer data nim, nama ke dalam variabel nim, nama
fetch next from cMhs into @nim, @nama;
--looping data nim dan nama
while @@fetch_status = 0
begin
--cetak data nim dan nama
print dbo.fCetak(@nim,@nama);
--transfer data nim dan nama selanjutnya ke dalam variabel nim, nama
fetch next from cMhs into @nim, @nama;
end;
--deklarasi variabel untuk jumlah mahasiswa berdsarkan kota
declare @jum_mhs as numeric;
--set nilai @jumlah
set @jum_mhs = dbo.fHitungMhs(@kota);
print ' >> jumlah MHS : '+ convert(char,@jum_mhs) + 'orang';
--close cursor cMhs
close cMhs
--buat deallocate untuk menghapus cursor cKota
deallocate cMhs;
--###############################################################
--transfer data kota selanjutnya ke dalam variabel kota
fetch next from cKota into @kota;
end;
--close cursor cKota
close cKota;
--buat deallocate untuk menghapus cursor cKota
deallocate cKota;
0 komentar:
Posting Komentar