Post on 26-May-2017
� �
����������ABCBA��DDE��FA���
��������� A�BCDE�CF�����A A��FCE��F��A���
�����A����A�� !"� "!AF"#"$!�A%A&�!�#'
��(��!�$AC"( �(A) �*"+$�!�$A,"-"+�A���� -A• A./0/A
� �
������
�����������AB�CD�EF���
��������ABCDEBF�����B�����B�B������B��������B����������
� ���������� ������B���� ���B! "�#���B���� ���$B
%���&B'BA����B(���$B�#��)�$B*� ��� +�,��#�B(�,��������B��������-B
)����������B.������B��-� +�,��#�B/������-B)����������B
*������� ��������&������B�� ��B
)����������B������B���#�����B�A�A
� ����0�1����B2��������B.��#����
��������CD�EF���
!3��3����B(�2B.��)�����B)����������B+1�0%4*
��������B�C��A
+1�0%4*�� ���������B*�)#��B4� B���3��D� ���������B+#��&��B���B&�����B%4*D� %�������B��)&��B�&������B%4*D� ���� �����B,��)�����B+1�0%4*B��B
����)B&��"��D� �������&������B������B���B��-���B
+1�0%4*D
��������B�C��A
+1�0%4*�� �����)&��)���������B�����0/���0
����������D� ��) ���B,����BA����D� ��) ���B���3���B�����B5���-B���B
�&����B)���B������D� ��) ���B����B�����,�#�B�����B5���-B
���B�&����B)���B������D
���������B�C��A
+1�0%4*�� ��) ���B���3���B�����B
5���-B���B�&����B)��������D
� ��) ���B����B�����,�#�B�����B5���-B���B�&����B)��������D
���������B�C��A
+1�0%4*�� ��) ���B���3���B�����B
5���-B���B�&����B�����D� ��) ���B����B�����,�#�B
�����B5���-B���B�&����B�����D
� �
��AB��CDB�E���E��BFF��C����E
����������ABC�A�D
E��F��D��F�CB��������
�BB���A�AA������C��
����A��
�BB���A�AA����������
E��F��D��F�CB�������
�����������ABC�A�D
E��F��D��F�CB��������
�BB���A�AA����������
���������AB��C�B��C�����DEEFA��BA��
� �
����E�B�E�B���B������B�E����C���E
������F��F�A�D�
�������
�����D��
�F�C�������D��
�F�C�������D��
�������� ��C ���C � ���D!���D! ��DC�AB��DC�AB
"F�B����������
�D�#�D���$�%�!�D�F����&�'�(C���#�����AD�A���)�A!�&*�+,��A��&�-�./0012&�#CC�CD��34$
� �
���B����B��B���BFF��C����E
��F��F�A�D�
"C ����������5-
"C �������D���5-
��F��F�A�D�
"C ����������5/
"C �������D���5/
��F��F�A�D�
"C ����������5D
"C �������D���5D
�����������AB��CDBEA���F�����C�DE����B���C������EC�
��F��F�A�D�
6%�������5D
6%������5/
6%�������5/
6%������5-
6%�������5-
"C ������5-
"C �������5-
�������C����EC����EA���EAD��������B���F���B��C����������
C��AD��EAE����
6%������5D
� �
��B���������
����������ABCDEF�
� ���BF�B�A�B���C�B�����C�A���FEE����A�B�E���EB�BE��������BAF�E��
� ����E����C����F��BBC���EB�BE����A�FA�A�B��FCB����AB����C�F� �EA�A��B����FDDE��FA����
� �EE����B�BE�DBC��A�����BACFAB���A�B�FDDE��FA��!��CB"��CB BA��F���� BBA����BF�E�B��
��������B���D�����B��������������B���
7�D�#�D���$�%�!�D�F����&�'�(C���#�����AD�A���)�A!�&*�+,��A��&�-�./0012&�#CC�CD��89�:�49$
� �
��B���������A��E��F�B������DB !�"��#$
��� ���� ���"#���!A1+�#"23+(A$" ��+�
4�3 -A5"*"�36#" !AC�#"7A*$A48�$!3#"+A9� A 3!A2��!7
�!� "#$#���ABCDEF���!A#"#���!A�3���A5���3-A&3:
�%� �&�'$����ABCDE;�*�$9+�6!A�33$"A5�!�AC<6"A8="9(� -A>AC+�9(<A��?"9!A�+�" !"�A�+3-+�##� -B��@;F�,A5�!�A�:9=� -"AF�A"A#"#�" -(�(
�(� �&�')�*���ABCDE���A;�*�A�+3-+�##� -8��" !D$��"A��1�$9�!"�A;�*�$9+�6!F"+*"+D$��"A;�*�AF"+*�"!��8A 3A#3+"AB��@;F�,A�3!!�"D "9(
� �
��B���������
+,�
�A�D��A�D�
��E���������E�������
%���%���
�������
�����D��
;��AD���<� AB
;��AD���<� AB
����������
=�F>CF!
E���
�C�
����FD���F>CF!
E�!C��
��*� 9"�@��+-"+A�66��9�!�3 $A ""�$A B��F�������AB A!3A(""6A<3�+A� #FAF�$��BEA+"6+"$" !$A!="A��!�A$"!A� �A�$A+"$63 $���"A13+
� �BA����A!="A��!�A!=�!A�$A ""�"�A13+A*�"2� -A� � �A13+A�C�A��A��9(A� <A9=� -"$
� %�AC�EEBC�&����A5"1� "$A!="A��<A!="A)$"+A� !"+1�9"A�"�9!$A!3A)$"+A� 6�!� '�B��(���BA�AF9+"" A�+"$" !�!�3
���AE����FEE����BDB�BA�
?C��AD�;CDB#�����!CD�@CF�������F�A�!&�'�AA�)E��"F� FC��AD �>A�#�B��C&*�"F�D�AB��%C�&�-�./0042&�#CC�CD��/-9$
� �
-D���B./�"��� ��B�.B�B
����������
&��C��C��B��B���������B���DB !�"��#B'B#��C��B'B&�������(�
�&�')�*�����0�B���1DC�B
�A�D��A�D�
��E���������E�������
%���%���
)FA!)FA!
���F����F�
��B�F!��B�F!
@�!��C�C@�!��C�C
<�C!�F<�C!�F �"��"F���
�"��"F���
����FD
�C��������
�����D��
*DA�����B �.B�B
?C�C��F���
?C�C��F���
���F�!"F�B�!�F�
���F�!"F�B�!�F�
��C�A�DC�C���
�������
�����D��
E���
� �
�����������ABCBA��DDE��FA���
���������ABCDEF�F�F��A�����F�����
�����A�F����A������A�����F��A F!F���"F
#���$A%F��A&����$���A������FA'A(F�F�)
*F��$�F�A������A+��,�����F�A-�����A�F�F��A• A./0/A
� �
������
�B������A������������A�B��CD�CE��F����E������F�A�B�E�
� E�"�$�F�A1F���A����F$F��A�F��A!��1�22"""C1�������3$C���� F���F�A����F$F��A����F�A������A�1��F��C� #���A���4����F��A�F$F�A4�$�A�B������A��A�F�A�A��BCD�����A��CA
�����A�BC�DE�D
F����A�
F�A���A�
�A��BCD�����A��������E������
����E�DE�����A
� �������DEAE��������D��F�AD��D��A�� �D������AE�������A��A���A�F�� �������DEA��������E������E�A��������E��� ������F�A�B�E�E�A�����������EE�
� ��!"���FF��EE�E�D�������A���E�������E�AD���EA��#D���D��A�DE�#�D������A��������A�DE�
� ����D�A�A���E��������EA�E�D�� $��F�ED�D����
����A��� ���������� �D����� ����D�D�����
� �
���D��������DC�D���CA��DC
�!��EDC!�D�
�������D
��������ABACA��D�EAFA�
���A��������A�A�D�F���B
"D��EDC!DC�#�������D�EDC!DC
D����F����
D��A�CB��E����
���B��C�DEF���BC���� ���������� �D����� ����D�D�����
� �
�AB���$A�D�%F�A�B�E���E��E�
����EA���F��E����B���D#�����%������D��&
�AB���$A�D�%F�A�B�E���E��E�
����EA���F��E����B���D#����&�DC���D��&
�FAF�F�B���D
���B�F����A
������ ���������� �D����� ����D�D�����
'���D�����������
�F
��
���
'���D�������(&����
�F
CDF�
��B��
ECE
'���D�������
�F
����E�E��
��A�'C�����
����
(
(
)��*
)��*
E�ACD%�CA�D%&CD+� ������ "E��A� ,�F�A�� -���A�
)CA&��$A�D�����&�DC� .��F�F�A�
)CA&��$A�D������%���� .��F�F�A��%�����A�F�
#�D�����&�DC&� �DF�#��F�A��%"E��A/�
,�F�A�/�-���A�&
����%��������F�B����&�DC��F��������
�AB���$A�D�0A����
D�E�����E��F�A�B�E���E��E
������������F���F����B�A�������B��AEE����BAC������F�EB��
�����
����
�����!FA�B���"��F�#A���$�E�B��DB�F���%F�E���F��
� �
�B������D������D��B������F�� ���������� �D����� ����D�D�����
&���A'BAF�A����F��F�
�ABACA���A�AF��A�AB���(
)A�A���)������A�A��
����)��
� �
�B������D������D��FC�D�FA�D��������� ���������� �D����� ����D�D�����
�����B�����
%���A��A�����&�DC�AF����B�&�)C�F����&�)C�F� A�AF�����%����)��*A���
)�)C�F����&�DC��A��)���(����F�B��F��������(��A
� �
�����������ABCBA��DDE��FA���
���������ABCDEF�F�F��A�����F�����
�F����A�F�F����F
�� !�A"F �A#$�������A������FA%A&F�F�'
(F)!��F�A��)��)A*��+�����F�A,�����A�F F��A• A-./.A
� �
�������AB�CD� ���������� ������ �AB�A�����
���������
���������
��������AA
C����DEFE������� ��� ��� �AA
B��CD�EAF�B�����A��������D��F�A�����A�������������A�DA�����������F���D����A�
��������������A��D���� C��A����F��D���!���C�����A�����������������FA�A�������A����A��� ��F���F����"��������
� �
����������A�B�C�D�E�C�F
���������B�������D���B��
� ���������� ������ �AB�A�����
����E ���!E�"���������E#�$E����%E�"��E�����
"���#���A��A���B�F��$�%
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��&%E�"���������E#�$E����%E�"��E%"�"��
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��&%E�"���������E#�A�E����%E�"��E%"�"��
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��&%E�"���������E#�$E�����E�"��E���!E%���
� �
�����������B��� ���������� ������ �AB�A�����
�����
����ABCDE
FDE�������E��B
NIM 1234abc 1234ABC
������
�""��CA��
NIM 1234ABC 1234ABC E�����A�����A���E�A�������"AC��
NAMA ABDUL YADI Abdul YadiB��&�����#��'�������������'��AC#�(��������""��CA���A����#������������(��CA��
NAMA abdul yadi Abdul Yadi
NAMA AbDUl yADi Abdul Yadi
NAMA Abdul Yadi Abdul Yadi E�����A�����A���E�A�������"AC��
NAMA Abdul Yadi Abdul Yadi )��&���%��A��"AC��F��(����(����
� �
���������B!!��"� �����������B��� ���������� ������ �AB�A�����
��������AB����B�C�DEE�FB��'()E*���"� B��A���
E����������C����
E�������'��C�����(����F���%�C�����$*�+)*�,-�*)E������./E*����AF������A��������
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
0��ADA������*����������D��D��D��������C�A���F���D�������
���������ABC����DA�E���F��D���A�������E�BC
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1234','Abdul Yadi') RETURNING *;
�����
�����BFF�E�
id | nim | nama ----+------+------------ 1 | 1234 | Abdul Yadi
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1235','Linus Torvalds') RETURNING *;
�����
�����BFF�E�
id | nim | nama ----+------+--------------- 2 | 1235 | Linus Torvalds
-���� ���������F������A��� �����A������F����A�����D�����A�
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A��BF�A�E���B������E
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1236','Steve Jobs') RETURNING *;
�����
�����BFF�E�
id | nim | nama ----+------+------------ 3 | 1236 | Steve Jobs
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1236','Bill Gates') RETURNING *;
�����
�����BFF�E�
ERROR: duplicate key value violates unique constraint "mahasiswa: NIM tidak boleh ganda"
-���� ���!���B�����A���������ADA������D����A���D����DA���A�A
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A��BF�E����F��A�E���B�����B�B��
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('','Bill Gates') RETURNING *;
�����
�����BFF�E��F���������A��
ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: NIM tidak boleh kosong"
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1237','') RETURNING *;
�����
�����BFF�E���F���������A���
ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: nama tidak boleh kosong"
-���� B#�CD�B�����A���������ADA������D����A����A�A��A��#��D������A��A������A#������A"DA�
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A��BF������B�����A���A
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('123 7','Bill Gates') RETURNING *;
�����
�����BFF�E�
ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: NIM harus satu kata"
-���� B#�CD�B�����A���������ADA������D����A����A�A��A��#��D������A��A������A#������A"DA�
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
���������BF�������� �D����E��A� ���E���!"D������� ���
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1237abc','Bill Gates') RETURNING *;
�����
�����BFF�E��������� �D�����
id | nim | nama ----+---------+------------ 8 | 1237ABC | Bill Gates
INSERT INTO ft.mahasiswa (nim,nama) VALUES (' 1238 ','James Gosling') RETURNING *;
�����
�����BFF�E���A� ���E���!AD������� �����
id | nim | nama ----+------+--------------- 9 | 1238 | James Gosling
-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
���������AB��BDD��A�B����A�������E���F�
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1239',' Sutan Syahrir ') RETURNING *;
�����
�����BFF�E��A� ���E���!AD������� �����
id | nim | nama ----+------+--------------- 10 | 1239 | Sutan Syahrir
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1240','Tan Malaka') RETURNING *;
�����
�����BFF�E���A� ��#AD�� ���E���AD��A��
id | nim | nama ----+------+------------ 11 | 1240 | Tan Malaka
-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
���������AB��BDD��A�B����A�������E���F�
INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1241','CHaIRIL aNWaR') RETURNING *;
�����
�����BFF�E����D��� �DAF���A� ��A�� �D���$������������B%�D�����
id | nim | nama ----+------+--------------- 12 | 1241 | Chairil Anwar
-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������
� �
�������'����C�E����C����������(����� ���������� ������ �AB�A�����
0��ADA������*����������D��D��D��������C�A���F���D�������
CREATE OR REPLACE FUNCTION ft.mahasiswa_query(OUT i_id integer, OUT s_nim text, OUT s_nama text)
RETURNS SETOF record AS$BODY$BEGIN
RETURN QUERYSELECT ft.mahasiswa.id, ft.mahasiswa.nim, ft.mahasiswa.namaFROM ft.mahasiswaORDER BY LOWER(ft.mahasiswa.nim);
RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_query() TO ft_user;REVOKE ALL ON FUNCTION ft.mahasiswa_query() FROM public;
-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"����!��EA�A�E�����A��
� �
#��!�$B�'����C�E����C����������(����� ���������� ������ �AB�A�����
SELECT * FROM ft.mahasiswa_query();
�����
�����BFF�E�
i_id | s_nim | s_nama ------+---------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 8 | 1237ABC | Bill Gates 9 | 1238 | James Gosling 10 | 1239 | Sutan Syahrir 11 | 1240 | Tan Malaka 12 | 1241 | Chairil Anwar
� �
�������'����C�E����C����������)*'+,�-�E& �+
� ���������� ������ �AB�A�����
0��ADA������*����������D��D��D��������C�A���F���D�������CREATE OR REPLACE FUNCTION ft.mahasiswa_update(
INOUT i_id integer, INOUT s_nim text, INOUT s_nama text)
RETURNS SETOF record AS$BODY$DECLARE
_insert boolean:=TRUE;BEGIN
IF COALESCE(i_id,0)<>0 THENUPDATE ft.mahasiswa SET nim=s_nim, nama=s_nama WHERE id=i_idRETURNING id, nim, nama INTO i_id, s_nim, s_nama;_insert:=NOT FOUND;
END IF;IF _insert THEN
INSERT INTO ft.mahasiswa (nim, nama) VALUES (s_nim, s_nama)RETURNING id, nim, nama INTO i_id, s_nim, s_nama;
END IF;RETURN NEXT;RETURN;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_update(integer, text, text) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_update(integer, text, text) FROM public;
-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"������A��
� �
#��!�$B�'����C�E����C����������)*'+,�-�E& �+
� ���������� ������ �AB�A�����
SELECT * FROM ft.mahasiswa_update(NULL,'1241abC',' John LENNON ');
�����
�����BFF�E�
i_id | s_nim | s_nama ------+---------+------------- 13 | 1241ABC | John Lennon
SELECT * FROM ft.mahasiswa_update(13,'1242',' TANtowi Yahya');
�����
�����BFF�E�
i_id | s_nim | s_nama ------+-------+--------------- 13 | 1242 | Tantowi Yahya
� �
�������'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����
0��ADA������*����������D��D��D��������C�A���F���D�������
CREATE OR REPLACE FUNCTION ft.mahasiswa_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN
DELETE FROM ft.mahasiswa WHERE id=ANY(i_id);RETURN;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_delete(integer[]) FROM public;
-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"������A��
� �
#��!�$B�'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����
SELECT * FROM ft.mahasiswa_query();
�����
�����BFF�E��&��D��D��BDE�������F�E���A���
i_id | s_nim | s_nama ------+---------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 8 | 1237ABC | Bill Gates 9 | 1238 | James Gosling 10 | 1239 | Sutan Syahrir 11 | 1240 | Tan Malaka 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya
SELECT ft.mahasiswa_delete(ARRAY[8,10,11]);�����BFF�E��E���A���E��'$�()�E��((��
SELECT * FROM ft.mahasiswa_query();
�����
�����BFF�E��&��D��D��BDE���A����E���A���
i_id | s_nim | s_nama ------+-------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 9 | 1238 | James Gosling 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya
� �
�����������ABCBA��DDE��FA���
���������ABCDEF�F�F��A�����F�����
�F����A�F�FA����F�
�!��A"F!�A#$�������A������FA%A&F�F�'
(F)���F�A��)��)A*��+�����F�A,�����A�F!F��A• A-./.A
� �
�������AB�CD� ���������� ������ �AB�A�����
���������
���������� ��������AB��
C����DEFE������� ��� ���� �AB��� C�C
D��E��FAB�D�C��A���C���������B�A������A�������������AC�A�����C�����B��������A�
�C����������A�������� E��A���B����C�!���E�����A�����������������C�BA�A�������A���A�� ���B���B����"��������
�������C�C
� �
����������A�B�C�D�E�C�F
���������B�������D���B��
� ���������� ������ �AB�A�����
����E!����E�"���������E "�E�����E�"��E�����
"���#��"���A���D�B�$%
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��#�E�"���������E "�E�����E�"��E�"�"��
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��#�E�"���������E$���E�����E�"��E�"�"��
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��#�E�"���������E "�E�����E�"��E����E����
� �
����������A�B�C�D�E�C�F
����������������D���B�������
� ���������� ������ �AB�A�����
����E��#�E�"���������E% %E�����E�"��E������
� �
�����������B��� ���������� ������ �AB�A�����
�����
����ABCDE
FDE�������E��B
Kode mk0001 MK0001
������
�""��EAC�
Kode MK0001 MK0001 F������A�����A���F�A�������"AE�C
Label ILMU BAHAN Ilmu BahanD�&�����#��'��C���������'��AE#�(������""��EAC��A����#����C�����(��EAC�
Label Ilmu bahan Ilmu Bahan
Label IlMU bAHan Ilmu Bahan
Label Ilmu Bahan Ilmu Bahan F������A�����A���F�A�������"AE�C
Label Ilmu Bahan Ilmu Bahan )��&���%��A�C"AE��B��(����(��C
� �
���������B!!��"� �����������B��� ���������� ������ �AB�A�����
�����������ABCDEF���D����������C�����E����B���FC��D�C�C�
CREATE OR REPLACE FUNCTION ft.trig_mata_kuliah() RETURNS trigger AS$BODY$BEGIN--------auto correction for kode:
NEW.kode:=UPPER(NEW.kode); ----uppercaseNEW.kode:=TRIM(NEW.kode); ----trim leading and trailing spaces
--------auto correction for label:NEW.label:=TRIM(NEW.label); ----trim leading and trailing spaces NEW.label:=REGEXP_REPLACE(NEW.label,' +',' ','g'); ----remove extra space between words----convert the first letter of each word to uppercase----and the rest to lowercaseNEW.label=INITCAP(NEW.label); RETURN NEW;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;
D��A���F����������E����
F�������'��E����(����B���%�E�����$*�+)*�,-�*)F�����./F*����AB������A�����������CREATE TRIGGER trig_mata_kuliah BEFORE INSERT OR UPDATE ON ft.mata_kuliah FOR EACH ROW EXECUTE PROCEDURE ft.trig_mata_kuliah();
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
0��A�A������*�������������C���C������E��A���B�����������
���������ABC����DA�E���F��D���A�������E�BC
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0001','Ilmu Bahan',2) RETURNING *;
�����
�����BFF�E�
id | kode | label | sks ----+--------+------------+----- 1 | MK0001 | Ilmu Bahan | 2
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0002','Fisika Nuklir',4) RETURNING *;
�����
�����BFF�E�
id | kode | label | sks ----+--------+---------------+----- 2 | MK0002 | Fisika Nuklir | 4
-��� ���������B���C��A�� �����A�������B����A���C�����C�A�
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A���C��A�E���B������E
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0003','Biologi',3) RETURNING *;
�����
�����BFF�E�
id | kode | label | sks ----+--------+---------+----- 3 | MK0003 | Biologi | 3
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0003','Matematika',3) RETURNING *;
�����
�����BFF�E�
ERROR: duplicate key value violates unique constraint "mata_kuliah: kode harus unik"
-��� ���!���D�C��A���������A�A������������A����������A���A�A
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A���C��E������A�E���B�����B�B��
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('','Matematika',3) RETURNING *;
�����
�����BFF�E��F��������"���
ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: kode tidak boleh kosong"
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0004','',3) RETURNING *;
�����
�����BFF�E���F�������������
new row for relation "mata_kuliah" violates check constraint "mata_kuliah: label tidak boleh kosong"
-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A���C�������B�����A���A
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK 0004','Matematika',3) RETURNING *;
�����
�����BFF�E�
ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: kode harus satu kata"
-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�
� �
#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����
���������B��AD��A�D�D�A�E���B�������A��
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0004','Matematika',-1) RETURNING *;
�����
�����BFF�E�
ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: sks tidak boleh negatif"
-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
����������C��������� �D����E��A� ���E���!"D������� ���
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('mk0004','Matematika',3) RETURNING *;
�����
�����BFF�E��������� �D�����
id | kode | label | sks ----+--------+------------+----- 9 | MK0004 | Matematika | 3
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES (' MK0005 ','Kimia',4) RETURNING *;
�����
�����BFF�E���A� ���E���!AD������� �����
id | kode | label | sks ----+--------+-------+----- 11 | MK0005 | Kimia | 4
-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
���������AB��BDD��A�B����A�������E����
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0006',' Komputer ',4) RETURNING *;
�����
�����BFF�E��A� ���E���!AD������� �����
id | kode | label | sks ----+--------+----------+----- 12 | MK0006 | Komputer | 4
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0007','Enkripsi Data',4) RETURNING *;
�����
�����BFF�E���A� ��#AD�� ���E���AD��A��
id | kode | label | sks ----+--------+---------------+----- 13 | MK0007 | Enkripsi Data | 4
-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����
� �
#��!�$B� �����������B��� ���������� ������ �AB�A�����
���������AB��BDD��A�B����A�������E���F�
INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0008','PSikologi PENdiDIKan',4) RETURNING *;
�����
�����BFF�E����D��� �DAF���A� ��A�� �D���$������������B%�D�����
id | kode | label | sks ----+--------+----------------------+----- 14 | MK0008 | Psikologi Pendidikan | 4
-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����
� �
�������'����C�E����C����������(����� ���������� ������ �AB�A�����
0��A�A������*�������������C���C������E��A���B�����������CREATE OR REPLACE FUNCTION ft.mata_kuliah_query(
OUT i_id integer, OUT s_kode text, OUT s_label text,OUT i_sks smallint)
RETURNS SETOF record AS$BODY$BEGIN
RETURN QUERYSELECT ft.mata_kuliah.id, ft.mata_kuliah.kode,
ft.mata_kuliah.label, ft.mata_kuliah.sksFROM ft.mata_kuliahORDER BY LOWER(ft.mata_kuliah.kode);
RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mata_kuliah_query() TO ft_user;REVOKE ALL ON FUNCTION ft.mata_kuliah_query() FROM public;
-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"�������EA�A�E�����A��
� �
#��!�$B�'����C�E����C����������(����� ���������� ������ �AB�A�����
SELECT * FROM ft.mata_kuliah_query();
�����
�����BFF�E�
i_id | s_kode | s_label | i_sks ------+--------+----------------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 3 | MK0003 | Biologi | 3 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 12 | MK0006 | Komputer | 4 13 | MK0007 | Enkripsi Data | 4 14 | MK0008 | Psikologi Pendidikan | 4
� �
�������'����C�E����C����������)*'+,�-�E& �+
� ���������� ������ �AB�A�����
0��A�A������*�������������C���C������E��A���B�����������CREATE OR REPLACE FUNCTION ft.mata_kuliah_update(
INOUT i_id integer, INOUT s_kode text, INOUT s_label text, INOUT i_sks smallint)
RETURNS SETOF record AS$BODY$DECLARE
_insert boolean:=TRUE;BEGIN
IF COALESCE(i_id,0)<>0 THENUPDATE ft.mata_kuliah SET kode=s_kode, label=s_label, sks=i_sks WHERE id=i_idRETURNING id, kode, label, sks INTO i_id, s_kode, s_label, i_sks;_insert:=NOT FOUND;
END IF;IF _insert THEN
INSERT INTO ft.mata_kuliah (kode, label, sks) VALUES (s_kode, s_label, i_sks)RETURNING id, kode, label, sks INTO i_id, s_kode, s_label, i_sks;
END IF;RETURN NEXT;RETURN;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mata_kuliah_update(integer, text, text, smallint) TO ft_admin;REVOKE ALL ON FUNCTION ft.mata_kuliah_update(integer, text, text, smallint) FROM public;
-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"������A��
� �
#��!�$B�'����C�E����C����������)*'+,�-�E& �+
� ���������� ������ �AB�A�����
SELECT * FROM ft.mata_kuliah_update(NULL,' mk0009 ',' Statistik Dasar ',3::smallint);
�����
�����BFF�E�
i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 15 | MK0009 | Statistik Dasar | 3
SELECT * FROM ft.mata_kuliah_update(15,'MK0009','Statistik Dasar',2::smallint);
�����
�����BFF�E�
i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 15 | MK0009 | Statistik Dasar | 2
� �
�������'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����
0��A�A������*�������������C���C������E��A���B�����������
CREATE OR REPLACE FUNCTION ft.mahasiswa_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN
DELETE FROM ft.mahasiswa WHERE id=ANY(i_id);RETURN;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_delete(integer[]) FROM public;
-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"������A��
� �
#��!�$B�'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����
SELECT * FROM ft.mata_kuliah_query();
�����
�����BFF�E��&��D��D��BDE�������F�E���A���
i_id | s_kode | s_label | i_sks ------+--------+----------------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 3 | MK0003 | Biologi | 3 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 12 | MK0006 | Komputer | 4 13 | MK0007 | Enkripsi Data | 4 14 | MK0008 | Psikologi Pendidikan | 4 15 | MK0009 | Statistik Dasar | 2
SELECT ft.mata_kuliah_delete(ARRAY[3,12,14]);
�����BFF�E��E���A���E��'$�()�E��((��
SELECT * FROM ft.mahasiswa_query();
�����
�����BFF�E��&��D��D��BDE���A����E���A���
i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 13 | MK0007 | Enkripsi Data | 4 15 | MK0009 | Statistik Dasar | 2
� �
�����������ABCBA��DDE��FA���
���������ABCDEF�F�F��A�����F�����
�F����A���F�
�����A F��A!"�������A������FA#A$F�F�%
&F'���F�A��'��'A(��)�����F�A������A�F�F��A• A*+,+A
� �
�������AB�CD� ���������� ������ �AB�A�����
���������
��������AB�BC ��������DEF���A
C����DEFE������� ��� F���� ����� BFB
����F�������BD���DB��D�F������D������������������BF�����B���������F�D���
��BD��� !"��D��D�F�����#���D������F�B�$���������������������B����������D����D�#����������D�%��������
�����������
����A�&�""
� �
����������A�B�C�D�E�C�F
�������A���B����������D���B��
� ���������� ������ �AB�A�����
����E������E��E�����������E�� ����!�EC��"�E#�������
� %���A�A� ����!������������'�(�$�%��E%��"A�
� %���A��������������'�(�&���%���
%���A���)����B��D�������A� ����!�
� %���A��'(�'�)���D�F�FD������*�E+B���
� %���A�&)(#&��#���D�F�FD������*�E���
� �
����������A�B�C�D�E�C�F
�������A���B����������D���B��
� ���������� ������ �AB�A�����
����E������E��E�����������E����E�"��� EC��"�E#�������
%���A���)����B��D�������A����,"���
� %���A�A����,"��� �����������'�(�$�%��E%��"A�
� %���A��������������'�(�&���%���
� %���A��'(�'�)���D�F�FD������*�E+B���
� %���A�&)(#&��#���D�F�FD������*�E���
� �
����������A�B�C�D�E�C�F
���������B�������D���B��
� ���������� ������ �AB�A�����
����E+���"E�����������E�� ����!�E���E-���E�"��� E����,E��� E�����
*���A� ����!�E���A����,"���
� �
����������A�B�C�D�E�C�F
����������������D���B��
� ���������� ������ �AB�A�����
����E� %,E�����������E-����E ����E��� E'D.D�D�D)D.$
� �
������������B��� ���������� ������ �AB�A�����
�����
����ABCDE
FDE�������E��B
Nilai a A
������
�%%���B�
Nilai A A �����"����������������� %��B
� �
���������B������������������B��� ���������� ������ �AB�A�����
�����������ABCDEF���D����������C�����E����B���FC��D�C�C�
CREATE OR REPLACE FUNCTION ft.trig_nilai() RETURNS trigger AS$BODY$BEGIN--------auto correction for nilai:
NEW.nilai:=UPPER(NEW.nilai); ----uppercaseNEW.nilai:=TRIM(NEW.nilai); ----trim leading and trailing spaces
RETURN NEW;END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;
���D��������������D����
��������)���D����C��������(���D���'+�,-+�.& +-�������/*�+����D�������������CREATE TRIGGER trig_nilai BEFORE INSERT OR UPDATE ON ft.nilai FOR EACH ROW EXECUTE PROCEDURE ft.trig_nilai();
� �
������B���BC�DB� ���� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
���������A�B�B�CADE�FA��F�EA�E��A��������F��������A�A��EA����!�"F���DBD#�
SELECT * FROM ft.mahasiswa;
�AD���
��������A��
id | nim | nama ----+------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 9 | 1238 | James Gosling 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya
&�D�� 1����)D��������������%D���#%%�����D�F�)�����A� ����!������D������������
� �
������B���BC�DB� ���� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
���������A�B�B�CADE�FA��F�EA�E��A��������F��������A�A��EA����!�"F���$��B��
SELECT * FROM ft.mata_kuliah;
�AD���
��������A��
id | kode | label | sks ----+--------+-----------------+----- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 13 | MK0007 | Enkripsi Data | 4 15 | MK0009 | Statistik Dasar | 2
&�D�� 1����)D��������������%D���#%%�����D�F�)�����A����,"��� �����D������������
� �
������B���BC�DB� ���� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
����B���ABE�������AE���B�����B�EBF������BC
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,1,NULL) RETURNING *;
�AD���
��������A��
id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 1 | 1 | 1 |
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,2,'A') RETURNING *;
�AD���
��������A��
id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 2 | 1 | 2 | A
&�D�� �������������B���D�#�����D��������������B�F���B��
� �
������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����
����B������DE�A��E���������F�����A�AD�D�A��A�BD�E��A�EA�
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (999,2,'A') RETURNING *;
�AD���
��������A��
ERROR: insert or update on table "nilai" violates foreign key constraint "nilai: mahasiswa harus terdaftar"DETAIL: Key (mahasiswa)=(999) is not present in table "mahasiswa".
&�D�� ���������������BD���D����BD�F��-�)����D���.�D����D�
� �
������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����
����B������DE�A��E���������F�����A�AD�D�A��A�BD�E��A�EA�
A�A���DA���EA�������AEAFA�������D����������F���
...CONSTRAINT "nilai: mahasiswa harus terdaftar" FOREIGN KEY (mahasiswa) REFERENCES ft.mahasiswa (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT...
� !"�#$ %�&�'%�'% &����FA������BC�A�A��EA����!�"F���DBD#���B�A���AFA������F���DBD#��A�A��EA����!�"�B�B��E��AE�F������DBA�FA�����(
� !"� &�&�&�)&��)*'���E�AF�ACAE������ACBD�������A�A��EA����!�"F���DBD#����FA�E��A���A�EA�FA��F��A�A��EA����!�"�B�B(
� �
������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����
����B������DE�A��E���������F�����AEA�FB��A���A�BD�E��A�EA�
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,999,'A') RETURNING *;
�AD���
��������A��
ERROR: insert or update on table "nilai" violates foreign key constraint "nilai: mata kuliah harus terdaftar"DETAIL: Key (mata_kuliah)=(999) is not present in table "mata_kuliah".
&�D�� ���������������BD���D����BD�F��-�)����D���.�D����D�
� �
������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����
����B������DE�A��E���������F�����AEA�FB��A���A�BD�E��A�EA�
...CONSTRAINT "nilai: mata kuliah harus terdaftar" FOREIGN KEY (mata_kuliah) REFERENCES ft.mata_kuliah (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT...
� !"�#$ %�&�'%�'% &����FA������BC�A�A��EA����!�"F���$��B����B�A���AFA������F���$��B���A�A��EA����!�"�B�B��E��AE�F������DBA�FA�����(
� !"� &�&�&�)&��)*'���E�AF�ACAE������ACBD�������A�A��EA����!�"F���$��B�����FA�E��A���A�EA�FA��F��A�A��EA����!�"�B�B(
A�A���DA���EA�������AEAFA�������D����������F���
� �
������B���BC�DB� ���� ���������� ������ �AB�A�����
����B���B��+B�����DE�A��E���A�AD�D�A�A���AEA,FB��A��E�AF��������A�A
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,9,'A') RETURNING *;
�AD���
��������A��
id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 7 | 1 | 9 | A
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,9,'A') RETURNING *;
�AD���
��������A��
ERROR: duplicate key value violates unique constraint "nilai:mahasiswa, mata kuliah tidak boleh ganda"
&�D�� ���$������BD���D������F����D�F���������F����F���D
� �
������B���BC�DB� ���� ���������� ������ �AB�A�����
����B�������F����DE�A��E�����A���A��A�������%-.-'- -&-.�
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,11,'F') RETURNING *;
�AD���
��������A��
ERROR: new row for relation "nilai" violates check constraint "nilai: hanya boleh A,B,C,D,E,BL"
&�D�� �A��F����BD���D������F����D�F����������D����D�A��F��D��������D��A���D�D%F�
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,11,NULL) RETURNING *;
�AD���
��������A��
id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 10 | 1 | 11 |
�������E����BCC�C�����F����� ���C�C�C��C��B�����������E���������
� �������DCB���BC��FC����E�����������E��DF�C�D
� �
������B�������������B��� ���������� ������ �AB�A�����
����B����B�B�D��A�B�#CC���AD��A��EA�CA���A���/��A�������CA��D
INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,13,' c ') RETURNING *;
�AD���
��������A��
id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 11 | 1 | 13 | C
&�D�� *�D�#������D����D��������������-.00+-��'�)���.�B��D�
� �
�������A����B������������'��DB�(B�B� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
CREATE OR REPLACE FUNCTION ft.nilai_convert(IN s_nilai text) RETURNS smallint AS$BODY$BEGIN
RETURN CASE WHEN s_nilai='A' THEN 4WHEN s_nilai='B' THEN 3WHEN s_nilai='C' THEN 2WHEN s_nilai='D' THEN 1WHEN s_nilai='E' THEN 0ELSE NULL END;
END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE;
2�����������D����
SELECT ft.nilai_convert('A');
1B���
!"��������
nilai_convert --------------- 4
� �
�������)����C�E����C����������*����� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
CREATE OR REPLACE FUNCTION ft.nilai_query(OUT i_id integer, OUT i_mahasiswa integer, OUT s_mahasiswa_nama text,OUT i_mata_kuliah integer, OUT s_mata_kuliah_kode text, OUT s_mata_kuliah_label text,OUT i_sks smallint, OUT s_nilai text, OUT i_sks_nilai smallint)
RETURNS SETOF record AS$BODY$BEGIN
RETURN QUERYSELECT ft.nilai.id, ft.nilai.mahasiswa, ft.mahasiswa.nama,
ft.nilai.mata_kuliah, ft.mata_kuliah.kode, ft.mata_kuliah.label,ft.mata_kuliah.sks, ft.nilai.nilai, (ft.nilai_convert(ft.nilai.nilai)*ft.mata_kuliah.sks)::smallint
FROM ft.nilai INNER JOIN ft.mahasiswa ON ft.nilai.mahasiswa=ft.mahasiswa.idINNER JOIN ft.mata_kuliah ON ft.nilai.mata_kuliah=ft.mata_kuliah.id
ORDER BY ft.nilai.id;
RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_query() TO ft_user;REVOKE ALL ON FUNCTION ft.nilai_query() FROM public;
&�D�� ����D��������A����%D���#�(���D�����A��B�����������%����"��ED�E�����A��
� �
������B�)����C�E����C����������*����� ���������� ������ �AB�A�����
SELECT * FROM ft.mata_kuliah_query();
�AD���
��������A��
i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 2 | 1 | Abdul Yadi | 2 | MK0002 | Fisika Nuklir | 4 | A | 16 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 10 | 1 | Abdul Yadi | 11 | MK0005 | Kimia | 4 | | 11 | 1 | Abdul Yadi | 13 | MK0007 | Enkripsi Data | 4 | C | 8
� �
�������)����C�E����C����������&()+%�,�E ��+
� ���������� ������ �AB�A�����
CREATE OR REPLACE FUNCTION ft.nilai_update(INOUT i_id integer, INOUT i_mahasiswa integer, OUT s_mahasiswa_nama text,INOUT i_mata_kuliah integer, OUT s_mata_kuliah_kode text, OUT s_mata_kuliah_label text,OUT i_sks smallint, INOUT s_nilai text, OUT i_sks_nilai smallint)
RETURNS SETOF record AS$BODY$DECLARE
_insert boolean:=TRUE;BEGIN
IF COALESCE(i_id,0)<>0 THENUPDATE ft.nilai SET mahasiswa=i_mahasiswa, mata_kuliah=i_mata_kuliah, nilai=s_nilai WHERE id=i_idRETURNING id, mahasiswa, mata_kuliah, nilai INTO i_id, i_mahasiswa, i_mata_kuliah, s_nilai;_insert:=NOT FOUND;
END IF;IF _insert THEN
INSERT INTO ft.nilai (mahasiswa, mata_kuliah, nilai) VALUES (i_mahasiswa, i_mata_kuliah, s_nilai)RETURNING id, mahasiswa, mata_kuliah, nilai INTO i_id, i_mahasiswa, i_mata_kuliah, s_nilai;
END IF;SELECT ft.mahasiswa.nama INTO s_mahasiswa_nama FROM ft.mahasiswa WHERE ft.mahasiswa.id=i_mahasiswa;SELECT ft.mata_kuliah.kode, ft.mata_kuliah.label, ft.mata_kuliah.sks
INTO s_mata_kuliah_kode, s_mata_kuliah_label, i_sksFROM ft.mata_kuliah WHERE ft.mata_kuliah.id=i_mata_kuliah;
i_sks_nilai:=ft.nilai_convert(s_nilai)*i_sks;RETURN NEXT;
RETURN;END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_update(integer, integer, integer, text) TO ft_admin;REVOKE ALL ON FUNCTION ft.nilai_update(integer, integer, integer, text) FROM public;
&�D�� ����D��������A����%D���#�(���D�����A��B�����������%������A��
� �
������B�)����C�E����C����������&()+%�,�E ��+
� ���������� ������ �AB�A�����
SELECT * FROM ft.nilai_update(NULL,1,15,'D');
�AD���
��������A��
SELECT * FROM ft.nilai_update(12,1,15,'c');
�AD���
��������A��
i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | D | 2
i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4
� �
�������)����C�E����C���������� +-+�+� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
CREATE OR REPLACE FUNCTION ft.nilai_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN
DELETE FROM ft.nilai WHERE id=ANY(i_id);RETURN;
END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.nilai_delete(integer[]) FROM public;
&�D�� ����D��������A����%D���#�(���D�����A��B�����������%������A��
� �
������B�)����C�E����C���������� +-+�+� ���������� ������ �AB�A�����
SELECT * FROM ft.nilai_query();
�AD���
��������A��0+B����������D����B�����E�1�
SELECT ft.nilai_delete(ARRAY[2,10,11]);��������A��0���E�����2-�34�A��331�
SELECT * FROM ft.nilai_query();
�AD���
��������A��0+B����������D�E��A�����E�1�
i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 2 | 1 | Abdul Yadi | 2 | MK0002 | Fisika Nuklir | 4 | A | 16 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 10 | 1 | Abdul Yadi | 11 | MK0005 | Kimia | 4 | | 11 | 1 | Abdul Yadi | 13 | MK0007 | Enkripsi Data | 4 | C | 8 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4
i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4
� �
�����������������A����B��� ���������� ������ �AB�A�����
�AFAB
�FE�B
��A�FE��AFAB
�CF��A����AFAB
��FE��AFAB
�CF��A��
���A��
��FE
���A��
�B��C��
� �
�����������������A����B��������������B�����&E���F���B!�./01
� ���������� ������ �AB�A�����
0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����
CREATE TYPE ft.ip_accum AS (sks integer, accum integer);�B���/�)�������%����D�F� DD��3���B�
CREATE OR REPLACE FUNCTION ft.ipk_accum(acc ft.ip_accum, s_nilai text, i_sks smallint) RETURNS ft.ip_accum AS$BODY$DECLARE
_nilai numeric;BEGIN
_nilai:=ft.nilai_convert(s_nilai)*i_sks;IF (_nilai IS NOT NULL) THEN
acc.sks:=acc.sks+i_sks;acc.accum:=acc.accum+_nilai;
END IF;RETURN acc;
END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
DD�����B�D��������D����
���������D���� CREATE OR REPLACE FUNCTION ft.ipk_calc(acc ft.ip_accum) RETURNS numeric AS$BODY$BEGIN
RETURN CASE WHEN acc.sks>0 THEN acc.accum::numeric/acc.sks::numericELSE NULL END;
END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
� �
�����������������A����B��������������B�����&E���F���B!�./21
� ���������� ������ �AB�A�����
CREATE AGGREGATE ft.ipk(text, smallint)( sfunc = ft.ipk_accum, stype = ft.ip_accum, finalfunc = ft.ipk_calc, initcond = '(0,0)');
���D��*�����D������D����
2������� SELECT ft.nilai.mahasiswa, ft.ipk(ft.nilai.nilai, ft.mata_kuliah.sks) FROM ft.nilai inner join ft.mata_kuliah on ft.nilai.mata_kuliah=ft.mata_kuliah.idGROUP BY ft.nilai.mahasiswa;
1B��� mahasiswa | ipk -----------+-------------------- 1 | 3.2000000000000000
� �
�����������ABCBA��DDE��FA���
���������A�BCDECF����E�������F�����������BC��F����F�F����F
����F�F��
�A���� F���!�����������F�"�#F�F�$
%F����F��������&��'C���F��(EC��BF�F�E�• �)*+*�
� �
������
� ����������� ABC��DEDF��D������� �C������ �FD��AA���DF��DAA������ �����A�B���D�A��D�� ���D �� �D!�A"���� �#�$�F
� ��������D�FD��B���D��A%�C�� �#�$�FD��A%�C�
� �
����FA����� ������������ �����A�BCDAEFD���� �F��A��F��A�� �����
����A��BCDEF��B�B���B������� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
���E�F���F��F�B��FC��http://tomcat.apache.org/download-60.cgi
��AFEF�������FA����B�F�F����������BC ��B�� �D�F���E��E����ED��A�E���F��C�DCE��� �F��EE��� ���F���AC�F��FD�A���E�EA��EA���!F�"�����F����EA�� BC��ED��FD�� DA ��FD�AEE�F"
service.bat install
� �
����A��B�FA���� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
!�E�D�B����� #DA���EA�������C���DA�$D�F�CD��DA�!C��%E�E�&�C��E��FD��� $D�ED�����FA��' �FD����#DA�F��D���(��C�AFD��)CC�*'#()+�� (��C���D�������,CC���!C��,CC�������)CC�FA�&�C��E��FD��� �����
���E�F���F��F�B��FC��http://www.eclipse.org/downloads/
��AFEF���!�E�D�B�� �D�F���E��E����ED��A�E���F��C�DCE��� )�� �ED�E�F�E�F����DE�E��C�������ED��E�EA�ED�� D���F����� �F�
&FF���E��E��"��C�����D���D&A�D'���D���D(��A��D�����A����
� �
����A��B��CB��DD�A�B���BCDDA����B��� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
"������� -���A�C!�����C���DA�ACC�.���C��E��FD�� AFFAF��.�ED���F���A��AC����EA���F���#DA��D�A�E��F�EAFCD��
� �����
��AFEF���#E�B�� -�AF!�ED�$�F����� /F����D �)���D*D�������D+�"D�A&�"����� -���-�EFE����C!�AE����FA��"�,����--��.�AA���.CAB-�C�����-�� ���-/.E�� �ED0 A�ED���� EF�FD�A� ��F�$�F����
� �
����A��B��CB��DD�A�B���BCDDA����B��� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
��AFEF���#$$E�B�
� �C�DCE���E��E����"�$0.1./.2��D�E�F�,����--CA��.�AA���.CAB-"���AA����-�A"��A��.,�B��
� �D�F���E��E����F�� EA ��F���AC�F�� �C�DCE���E��E���,����--��.�AA���.CAB-�C�����-�� ���-/.E-2���-���$�/E$������.2���
� �D�F���E��E���A����� A��ED�A���EA�ED�����EE��� ���F���AC�F���A������EE���A� �A ���F���AC�F��C������
� �E D���$�F���.��ED�,�)�� �E��CAC�EAF��A��FDA���E�F�����EE���C������� �EE��$�F���.���A�&��!���D���� DA ����D�E!AE��ED�,�)�1�2�3����E�EF�����)CC�FA�
� �
����A��B����AD�E���B�D �B!A"���B"��"�B#�D$��
� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
��AFEF���#E�B�%A%��&�'�EEF�(�CB$�)��� �E D���4C�FE��F��!C5�� 6F�FA��(�"�,�����--��.�AA���.CAB-��-�"�-�� ����-&���&A#-�"�$���$�� ���.#���
�B BE�D�BA�&��B��E%���� 4�� �E��ED���D� 0F��C����F�DA��F���,�)����E�E���F�����EA����� ���F�C��FE�F�
��AFEF���#$$E�B�%A%��&�'�EEF�(�CB$�)��� �E D���4C�FE��F��!C5�� ��E�����ED��C�DCE��!F���"�$���$�� ���.#���� �EE����D �4C�FE��F��!C5.��F��3���D*D4���D3�����ED�E�E��ED� DA ������ �E�!F��#����ED��A�E���F��C�DCE��A����� A�
� �
����A��B�%�&��C� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�
!)A*"������� -D��5A�D�FCD�AC�,CC�������)CC�FA�� -����E���EA��C!��DA����F�����E���FDA��E�AF����F���A�.�E�C A�.�ED��A���EA���E����.�E��C���A���EAE��C���ED���E��FD���AC��.�ED��E��C����F����CDA�C���*46B+�E��F�EAFCD�!�E���C���
��AFEF����� �C�DCE���E��E����#�$0.5.5$�"�0.2����E�F�,����--""".���C,�.CAB-��A� C��-�"�-�A"��A��.�,��
� �D�F���E��E����ED��ED�E�E�ED��F���AE�ED�����EE����C0����FE�EDE��F��� �ED�