Kamis, 19 Desember 2013

Pemograman Basis Data II

Tugas Rangkuman 

Mata Kuliah   : Pemograman Basis Data II (PBD II)
     Dosen         : Titik Lusiani, M.Kom
Blog Dosen    : blog.stikom.edu/lusiani/


Package 

Package adalah himpunan dari fungsi dan procedure. Package harus terdiri dari 2 objek, yaitu package spesification dan package body.
Package terdiri dari dua bagian yaitu :
  •  Package Spesification digunakan untuk mendeklarasikan type,variable,cursor,exception, dan subprogram yang tersedia untuk digunakan.

Syntax Package :
   CREATE [OR REPLACE] PACKAGE package_name IS|AS
    public type and variable declarations
    subprogram specifications
    END [package_name];

  • Package Body secara penuh mendefinisikan cursor dan subprogram, selain itu body juga mengimplementasikan spesification.

Syntax Package :
    CREATE [OR REPLACE] PACKAGE package_name IS|AS
    public type and variable declarations
    subprogram specifications
    END [package_name];

Cursor
Cursor adalah sejenis variabel untuk menampung lebih dari satu baris data. Cursor dibagi menjadi 2 yaitu Cursor eksplisit dan Cursor implisit.
  1. Cursor Eksplisit adalah cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan
  2. Cursor Implisit adalah cursor yang tidak perlu dideklarasikan pada DECLARE section. Contoh perintah yang sering dipakai yaitu SELECT, INSERT, UPDATE dan DELETE


Cursor mempunyai beberapa tahap yaitu :
a.       Declare
b.      Open
c.       Fetch
d.      Close

Function
merupakan sebuah blok PL/SQL yang dapat mengembalikan sebuah nilai. Function juga dapat disimpan dalam sebuah schema object, sehingga dapat digunakan secara berulang-ulang.

Contoh Function Tanpa Parameter :
CREATE OR REPLACE FUNCTION tulis_teks RETURN VARCHAR2 AS
S VARCHAR2(20)
BEGIN
S := ‘HALLO SEMUA’;
RETURN S;
END;
/
SET SERVEROUTPUT ON
DECLARE
X VARCHAR2(20);
BEGIN
X := tulis_teks;
DBMS_OUTPUT.PUT_LINE(X);
END;
/

Contoh Function Dengan Parameter :

CREATE OR REPLACE FUNCTION
pangkat (bil INTEGER, n INTEGER)
RETURN INTEGER AS
HASIL INTEGER(10);
I INTEGER;
BEGIN
HASIL := 1;
FOR I IN 1..n LOOP
HASIL := HASIL * bil;
END LOOP;
RETURN HASIL;
END;
/

SET SERVEROUTPUT ON
DECLARE
H INTEGER;
BEGIN
H := pangkat(2, 3);
DBMS_OUTPUT.PUT_LINE(‘Hasil = ‘ || TO_CHAR(H));
END;
/

Stored Procedure
Sebuah prosedur yang tersimpan atau proc sederhana adalah blok PL / SQL bernama yang melakukan satu atau lebih tugas tertentu. Hal ini mirip dengan prosedur dalam bahasa pemrograman lain. Prosedur A memiliki header dan tubuh. Header terdiri dari nama prosedur dan parameter atau variabel dilewatkan ke prosedur. Tubuh terdiri atau bagian deklarasi bagian, bagian pelaksanaan dan pengecualian mirip dengan Blok PL / SQL umum.

Kita bisa memakai parameter ke prosedur dalam tiga cara, yaitu :
1.  IN-parameter
2. OUT-parameter
3. IN OUT-parameter

Parameter IN digunakan untuk memasukkan nilai. Parameter OUT adalah sebuah parameter yang berfungsi untuk mendapatkan nilai untuk ditampilkan. Parameter IN OUT  berfungsi untuk menginputkan sebuah nilai lalu menampilkan nilai tersebut.

Sintaks umum untuk membuat prosedur adalah:
CREATE [OR REPLACE] PROCEDURE proc_name [list of parameters] 
IS    
   Declaration section 
BEGIN    
   Execution section 
EXCEPTION    
  Exception section 
END; 

IS - menandai awal dari tubuh prosedur dan mirip dengan MENYATAKAN di anonim PL / SQL Blok. Kode antara IS dan BEGIN bentuk bagian Deklarasi.
Sintaks dalam kurung [] menunjukkan mereka adalah opsional. Dengan menggunakan CREATE OR REPLACE bersama-sama prosedur dibuat jika tidak ada prosedur lain dengan nama yang sama ada atau prosedur yang ada diganti dengan kode saat ini.



Sumber :



Senin, 21 Oktober 2013

Pemograman Basis Data II



Mata Kuliah : Pemograman Basis Data II (PBD II)
Dosen : Titik Lusiani, M.Kom
Blog :
blog.stikom.edu/lusiani   


Resume Pertemuan 1-7

Pengertian Oracle Developer  yaitu software developer untuk menggunakan oracle.
Perbedaan PL/SQL  dan SQL :
PL/SQL :  -  lebih mengarah ke oracle formnya
-  didalamnya perintah SQL digunakanuntuk memanipulasi data
-  didalam block structure terdapat declare, begin dan end
SQL    :  -  digunakan untuk memanipulasi data dengan select, from, where kedalam database
SQL Cursor yaitu menampilkan data secara indeks/himpunan.
SQL Cursor attributes :
§  SQL%ROWCOUNT  < menghitung baris >
§  SQL%FOUND           < menghitung data >
§  SQL%NOTFOUND   < mencari data yang tidak ada >
§  SQL%ISOPEN           < database dibuka >

Practice 2
1.    C.  Add a local subprogram containing the algorithm
Alasan :
Menambahkan subprogram yang ada di program, karena didalam prosedur ada prosedure lagi

2.      D. to store a repeating block of code once without creating a separate construct
Alasan :
Jika menggunakan subprogram, kode hanya dijalankan dalam prosedur.Apabila kode dieksekusi dari luar prosedur, maka subprogram harus ditulis sebagai prosedur packged atau berdiri sendiri/terpisah.

3.      D. Named
Alasan :
Karena menggunakan method arbitary order

4.      C. procedure
Alasan :
Prosedur ini biasanya dibuat untuk melakukan suatu tindakan tanpa menghasilkan suatu nilai

5.      C. EXECUTE find_seats_sold (v_theater_id => 500, v_movie_id => 34);
Alasan :
Karena setiap create pasti jawabannya yang sukses adalah execute. Dan simbol yang dipakai yaitu “=>” bukan “:=
6.      C. EXECUTE find_seats_sold (34);
Alasan :
Karena untuk mengeksekusi prosedure dalam SQL * Plus memerlukan perintah EXECUTE
7.      D. Executing the stored function within a CHECK constraint of a table
Alasan :
Karena fungsi tidak dapat dipanggil dalam keadaan CHECK,  tapi dapat digunakan dalam keadaan fungsi SELECT, INSERT, UPDATE, dan DELETE

8.      C. VARIABLE g_yearly_budget NUMBER
     EXECUTE :g_yearly_budget := GET_BUDGET(11);
Alasan :
           perintah EXECUTE dan INSERT
          VARIABLE g_yearly_budget NUMBER
       EXECUTE:g_yearly_budget := GET_BUDGET(11); àeksekusi(:g_yearly_budget pada form)
       diisi dalamGET_BUDGET yang bernilai 11
9.      A.  SELECT id, name, get_budget(id,200) FROM studio;  
            Alasan:
Karena menggunakan EXECUTE dan INSERT

      10.  B. passing values to the function
             Alasan :
mengirimkan nilai ke fungsi

        11.   A. Issue the SHOW ERRORS command.
Alasan :
Menggunakan perintah show error untuk mengecek

        12.  C. Add "RETURN BOOLEAN" immediately before the IS keyword.
alasan :
Karena didalam sintaknya terdapat fungsi boolean
         13.  A.Network traffic is decreased by bundling commands.
Alasan :
Network traffic is decreased by bundling commands

         14.  D. DECLARE v_updated_flag BOOLEAN;
            BEGIN
            v_updated_flag :=      set_budget(11,500000000);
            END;
           Alasan :
           DECLARE v_updated_flag BOOLEAN;
           BEGIN
            v_updated_flag := set_budget(11,500000000);
            END;
         15.  Which two subprogram headers are correct? (Choose two.)
          B.  CREATE OR REPLACE PROCEDURE get_sal (v_sal IN number) IS
          D. CREATE OR REPLACE FUNCTION calc_comm (p_amnt IN number) RETURN number
           Alasan:
-   CREATE OR REPLACE PROCEDURE get_sal (v_sal IN number) IS
-  CREATE OR REPLACE FUNCTION calc_comm (p_amnt IN number) RETURN number

           16.   B. function can be used in a SQL statement.
Alasan :
Karena function dapat digunakan dalam SQL
  1. C. DROP FUNCTION get_budget;
Alasan :
Perintah DROP SQL digunakan untuk menghapus objek dari database.
  1.  D. CREATE OR REPLACE FUNCTION calc_comm (v_emp_id IN NUMBER) RETURN number IS
v_total NUMBER;
BEGIN
SELECT SUM(ord.total) INTO v_total
FROM ord,customer
WHERE ord.custid = customer.custid
AND customer.repid = v_emp_id;
RETURN (v_total * .20);
END;
Alasan :
karena Create Or Replace adalah jawaban paling benar , return number IS

         19.  A. SELECT id, name, get_budget(id,200) FROM studio;
Alasan :
Perintah diatas adalah query yang dapat dijalankan dengan SQL*Plus.
  1. D. executing the stored function within the DEFAULT clause of the CREATE TABLE
   Alasan :
Karena CREATE TABLE default memang tidak ada
  1.  D. SELECT * FROM ord GROUP BY ordid HAVING calc_comm(total) > 5000;
            Alasan :
Kalau jawaban B menjurus ke tabel
  1. A. by limiting changes to logic to one location
Alasan :
Menyederhanakan fungsi adalah dengan memberikan parameter.
  1. A. A function must return a value.
D. A function can be invoked from within a PL/SQL expression.
    Alasan :
Fungsi merupakan  suatu blok PL/SQL yang mengembalikan nilai. Fungsi dapat juga di invoke dengan menggunakan SQL*Plus.
         24.  B. It must not modify the database.
            Alasan :
            Hanya menampilkan saja

          25.  D. Add "(v_studio_id IN NUMBER)" right before the RETURN statement of the header.
            Alasan : Karena sebelum return diberikn variabel
          26.  A. Function
Alasan :

           27.  D. RETURN v_yearly_budget;
Alasan :
v_yearly_budget telah dideklarasikan pada query diatas maka RETURN v_yearly_budget dapat mengexecute function diatas.
  1.  A. public
Alasan :
Semua yg dideklarasikan pada package spesifikasi adalah public, maka jika akan membuat variable, konstanta, prosedur, fungsi, dan lainnya sebagai public maka deklarasikan pada package spasification.
          29.  A. This package specification can exist without a body.
Alasan :
Sebuah Blok PL / SQL terdiri dari tiga bagian.Bagian Deklarasi (opsional). Bagian Eksekusi (wajib). Eksepsi (atau Kesalahan) Penanganan bagian (opsional).
           30.  A. They are public procedures.
Alasan :
Blok Procedure merupakan  suatu blok PL/SQL yang menyimpan sekumpulan perintah yang tidak disertai dengan pengembalian nilai.

Practice 1
1. A. USER_SOURCE
Alasan :  karena user_source adalah suatu object yang digunakan untuk melihat isi atau source code dari sebuah procedure atau function

2. D. procedures, functions, and packages
Alasan :

3. D. USER_DEPENDENCIES
Alasan : karena dapat digunakan ketika ada salah satu user telah dijalankan

4. C. USER_DEPENDENCIES
Alasan : karena dapat digunakan ketika ada salah atu user dijalankan

5. C. USER_OBJECTS
Alasan : karena berguna untuk melihat status dari sebuah procedure, apakah valid/tidak.


6. A. SELECT text FROM user_source WHERE name = 'THEATER_PCK';
Alasan  : karena syntax tersebut dapat digunakan untuk melihat isi dari sebuah procedure

7. C. USER_OBJECTS
Alasan : user_objects dapat digunakan untuk melihat status dari suatu procedure, apakah valid atau tidak.

8. C. USER_OBJECTS
Alasan : karena user_objects selain dapat digunakan untuk melihat status dari dari sebuah procedure. User_objects juga dapat digunakan untuk melihat kapan  terakhir sebuah procedure dibuat atau dimodifikasi

9. C, E 
REVOKE UPDATE ON employee FROM hr_emp;
GRANT EXECUTE ON update_employee TO hr_emp;
Alasan : agar hr_emp dapat melakukan update tabel employee.

10. C. A user needs only the privilege to execute the procedure and does not need privileges on the underlying tables.
Alasan  : karena user perlu diberi hak akses sesuai dengan privileges yg diberika kepada user tersebut.

11. A. GRANT EXECUTE ON update_theater TO jsmith;
Alasan : Memberikan hak akses kepada jsmith agar user jsmith bis melakukan update_theater

12. D. Only the database administrator can recover this procedure using backups.
Alasan  : karena hanya administrator yang bisa menggunakan atau me-recover prosedure yang telah terhapus yaitu menggunakan backup

13. D. Declare a new exception and associate it with error code -2292. Create an exception section, and add code to handle this non-predefined exception that you just declared.
Alasan  

14. D. Use (v_total IN sales_order.total%TYPE DEFAULT 0) as the parameter definition.
Alasan :

15. C. Add (v_name IN VARCHAR2) immediately before the IS keyword.
Alasan  

16. D. CREATE OR REPLACE PROCEDURE
Alasan : karena bisa mengubah atau mengganti apabila data tersebut error atau sudah pernah dibuat. Dan perintah ini sudah struktur yang benar dalam membuat sebuah prosedure

17. A. IN
Alasan : variabel tersebut bertipe number

18. D. Formal arguments allow you to transfer values to and from the calling environment.
Alasan :

 19. A. The statement compiles, and the procedure is created.
Alasan : karena struktur penulisan prosedure sudah benar. Sudah ada IN dan juga ada variabelnya.

20. D.  When an exception is raised in a called procedure, control goes to the exception section of that block.
Alasan :

21. D. IN OUT parameters cannot be initialized with a default value.
Alasan : 

22. E. The declaration of V_COST_PER_TICKET cannot have a DEFAULT value.
Alasan :

23. B.  An IN OUT formal parameter does not require a value before returning to the calling environment.
Alasan :

24. C. EXECUTE find_seats_sold (v_theater_id => 500);
Alasan :

25. C. source code and compilation errors
Alasan :

26. A. Declare V_SEATS_SOLD as an OUT argument.
Alasan :

27. A. Only data type is required.
Alasan :

28. D. IN OUT
Ket : karena dapat digunakan untuk memasukkan nilai dan mengeluarkan nilai.

29. C. DROP PROCEDURE calc_comm;
Ket : karena drop 

30. A, B, C
- The ADD_THEATER procedure is written in SQL.
- The ADD_THEATER procedure can be shared by multiple programs.
- The ADD_THEATER procedure will be stored in the database as a schema object.