FUNCTION STORED PROCEDURE Siti Mukaromah S Kom MCP

  • Slides: 67
Download presentation
FUNCTION & STORED PROCEDURE Siti Mukaromah, S. Kom, MCP. 1

FUNCTION & STORED PROCEDURE Siti Mukaromah, S. Kom, MCP. 1

Function 2

Function 2

� Fungsi mirip dengan operator bahwa mereka memanipulasi item data dan mengembalikan hasilnya. Fungsi

� Fungsi mirip dengan operator bahwa mereka memanipulasi item data dan mengembalikan hasilnya. Fungsi berbeda dari operator dalam format argumen mereka. Format ini memungkinkan mereka untuk beroperasi pada nol, satu, dua, atau lebih argumen: � fungsi (argumen, . . . ) � Fungsi tanpa argumen biasanya mengembalikan nilai yang sama untuk setiap baris. 3

� Fungsi SQL dibangun ke dalam Oracle Database dan tersedia untuk digunakan dalam berbagai

� Fungsi SQL dibangun ke dalam Oracle Database dan tersedia untuk digunakan dalam berbagai statement SQL yang sesuai. Jangan bingung dengan fungsi-fungsi userdefined SQL yang ditulis dalam PL/SQL. 4

� Dalam diagram sintaks untuk fungsi-fungsi SQL, argumen ditandai dengan datatypes mereka. Ketika parameter

� Dalam diagram sintaks untuk fungsi-fungsi SQL, argumen ditandai dengan datatypes mereka. Ketika parameter fungsi muncul dalam sintaks SQL, gantikan dengan salah satu fungsi yang diuraikan dalam bagian ini. Fungsi dikelompokkan oleh datatypes dari argumen mereka dan return value-nya. 5

Sintaks menunjukkan kategori dari fungsi sebagai berikut: Function Single Row Function 6

Sintaks menunjukkan kategori dari fungsi sebagai berikut: Function Single Row Function 6

� Bagian-bagian yang mengikuti daftar built-in fungsi SQL pada masing-masing kelompok diilustrasikan dalam diagram

� Bagian-bagian yang mengikuti daftar built-in fungsi SQL pada masing-masing kelompok diilustrasikan dalam diagram tersebut kecuali fungsi user-defined. Semua built-in fungsi SQL ini kemudian dijelaskan dalam urutan abjad. 7

Single Row Function � Single Row Function mengembalikan hasil tunggal untuk setiap baris dari

Single Row Function � Single Row Function mengembalikan hasil tunggal untuk setiap baris dari sebuah query tabel atau view. Fungsi-fungsi tersebut dapat muncul dalam daftar pilih, klausa WHERE, START WITH dan klausa CONNECT BY, serta klausa HAVING. 8

Numeric Functions � Numeric Functions menerima input numerik dan mengembalikan nilai numerik. Kebanyakan Numeric

Numeric Functions � Numeric Functions menerima input numerik dan mengembalikan nilai numerik. Kebanyakan Numeric Functions yang mengembalikan nilai NUMBER yang akurat sampai 38 digit desimal. Fungsi transendental COS, COSH, EXP, LN, LOG, SINH, SQRT, TAN, dan TANH akurat sampai 36 digit desimal. Fungsi transendental ACOS, ASIN, ATAN, dan ATAN 2 akurat sampai 30 digit desimal. 9

Fungsi numerik adalah: � ABS � FLOOR � SIN � ASIN � LOG �

Fungsi numerik adalah: � ABS � FLOOR � SIN � ASIN � LOG � SQRT � ACOS � ATAN 2 � BITAND � CEIL � COSH � EXP � LN � MOD � NANVL � POWER � REMAINDER � ROUND (number) � SIGN � SINH � TANH � TRUNC (number) � WIDTH_BUCK ET 10

Character Functions Returning Character Values Karakter fungsi yang mengembalikan nilai karakter, nilai pengembaliannya dari

Character Functions Returning Character Values Karakter fungsi yang mengembalikan nilai karakter, nilai pengembaliannya dari datatypes berikut kecuali dinyatakan dibuktikan: � Jika argumen input CHAR atau VARCHAR 2, maka nilai yang dikembalikan VARCHAR 2. � Jika argumen input NCHAR atau NVARCHAR 2, maka nilai yang dikembalikan NVARCHAR 2. 11

Panjang (length) nilai yang dikembalikan oleh fungsi ini dibatasi oleh panjang (length) maksimum dari

Panjang (length) nilai yang dikembalikan oleh fungsi ini dibatasi oleh panjang (length) maksimum dari datatype yang dikembalikan. � Untuk fungsi yang mengembalikan CHAR atau VARCHAR 2, jika panjang (length) dari nilai pengembalian melebihi batas, Oracle Database akan memotong dan mengembalikan hasilnya tanpa pesan kesalahan. � Untuk fungsi yang mengembalikan nilai CLOB, jika panjang melebihi batas nilai-nilai pengembalian, Oracle akan menampilkan kesalahan dan tidak ada pengembalian data. 12

Fungsi karakter yang mengembalikan nilai karakter adalah: � CHR � REGEXP_SUBSTR � INITCAP �

Fungsi karakter yang mengembalikan nilai karakter adalah: � CHR � REGEXP_SUBSTR � INITCAP � RPAD � CONCAT � LOWER � LPAD � LTRIM � NLS_INITCAP � NLS_LOWER � NLSSORT � NLS_UPPER � REGEXP_REPLACE � RTRIM � SOUNDEX � SUBSTR � TRANSLATE � TREAT � TRIM � UPPER 13

NLS Character Functions � Fungsi karakter NLS mengembalikan informasi tentang karakter set. Fungsi Karakter

NLS Character Functions � Fungsi karakter NLS mengembalikan informasi tentang karakter set. Fungsi Karakter NLS adalah: � NLS_CHARSET_DECL_LEN � NLS_CHARSET_ID � NLS_CHARSET_NAME 14

Character Functions Returning Number Values � Karakter fungsi yang mengembalikan nilai angka (number) dapat

Character Functions Returning Number Values � Karakter fungsi yang mengembalikan nilai angka (number) dapat mengambil sebagai argumen mereka setiap datatype karakter. � Fungsi karakter yang mengembalikan nilai angka (number) : � ASCII � INSTR � LENGTH � REGEXP_INSTR 15

Datetime Functions � � � Fungsi datetime (Datetime Functions) beroperasi pada nilai-nilai tanggal (DATE),

Datetime Functions � � � Fungsi datetime (Datetime Functions) beroperasi pada nilai-nilai tanggal (DATE), timestamp (TIMESTAMP, TIMESTAMP WITH TIME ZONE, dan TIMESTAMP WITH LOCAL TIME ZONE), dan interval (INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH). Beberapa fungsi datetime dirancang untuk datatype Oracle DATE (ADD_MONTHS, CURRENT_DATE, LAST_DAY, NEW_TIME, dan NEXT_DAY). Jika Anda memberikan nilai timestamp sebagai argumen mereka, Oracle Database secara internal mengubah tipe input menjadi nilai DATE dan mengembalikan nilai DATE. Pengecualian adalah fungsi MONTHS_BETWEEN, yang mengembalikan angka, dan fungsi ROUND dan TRUNC, yang tidak menerima timestamp atau interval nilai sama sekali. Fungsi datetime lainnya dirancang untuk menerima salah satu dari tiga jenis data (tanggal, timestamp, dan interval) dan untuk mengembalikan nilai salah satu jenis. 16

Fungsi Datetime adalah: � ADD_MONTHS � CURRENT_DATE � CURRENT_TIMESTAMP � DBTIMEZONE � EXTRACT �

Fungsi Datetime adalah: � ADD_MONTHS � CURRENT_DATE � CURRENT_TIMESTAMP � DBTIMEZONE � EXTRACT � FROM_TZ (datetime) � LAST_DAY � LOCALTIMESTAMP � MONTHS_BETWEEN � NEW_TIME � NEXT_DAY � NUMTODSINTERVAL � NUMTOYMINTERVAL � ROUND (date) � SESSIONTIMEZONE � SYS_EXTRACT_UTC � SYSDATE � SYSTIMESTAMP � TO_CHAR (datetime) � TO_TIMESTAMP_TZ � TO_DSINTERVAL � TO_YMINTERVAL � TRUNC (date) � TZ_OFFSET 17

General Comparison Functions Fungsi perbandingan umum yang menentukan nilai terbesar dan atau paling kecil

General Comparison Functions Fungsi perbandingan umum yang menentukan nilai terbesar dan atau paling kecil dari satu set nilai. Fungsi perbandingan umum adalah: � GREATEST � LEAST 18

Conversion Functions � Conversion Functions (fungsi Konversi) mengkonversi nilai dari satu datatype ke yang

Conversion Functions � Conversion Functions (fungsi Konversi) mengkonversi nilai dari satu datatype ke yang lain. Secara umum, bentuk nama fungsi mengikuti konvensi datatype TO datatype. Datatype yang pertama adalah datatype masukan (input datatype). Datatype kedua adalah output datatype. 19

Fungsi konversi SQL adalah: � � � � � ASCIISTR BIN_TO_NUM CAST CHARTOROWID COMPOSE

Fungsi konversi SQL adalah: � � � � � ASCIISTR BIN_TO_NUM CAST CHARTOROWID COMPOSE CONVERT DECOMPOSE HEXTORAW NUMTODSINTERVAL NUMTOYMINTERVAL RAWTOHEX RAWTONHEX ROWIDTOCHAR ROWIDTONCHAR SCN_TO_TIMESTAMP_TO_SCN TO_BINARY_DOUBLE � � � � TO_BINARY_FLOAT TO_CHAR (character) TO_CHAR (datetime) TO_CHAR (number) TO_CLOB TO_DATE TO_DSINTERVAL TO_LOB TO_MULTI_BYTE TO_NCHAR (character) TO_NCHAR (datetime) TO_NCHAR (number) TO_NCLOB TO_NUMBER TO_DSINTERVAL TO_SINGLE_BYTE � � � TO_TIMESTAMP_TZ TO_YMINTERVAL TRANSLATE. . . USING UNISTR 20

Large Object Functions beroperasi pada LOBs. Fungsi Large Object Functions adalah: � BFILENAME �

Large Object Functions beroperasi pada LOBs. Fungsi Large Object Functions adalah: � BFILENAME � EMPTY_BLOB, EMPTY_CLOB 21

Collection Functions beroperasi pada tabel nested dan varrays. Fungsi SQLCollection Functions adalah: � CARDINALITY

Collection Functions beroperasi pada tabel nested dan varrays. Fungsi SQLCollection Functions adalah: � CARDINALITY � COLLECT � POWERMULTISET_BY_CARDINALITY � SET 22

Hierarchical Function � Hierarchical Function menerapkan informasi jalur hirarkis pada set hasil. � SYS_CONNECT_BY_PATH

Hierarchical Function � Hierarchical Function menerapkan informasi jalur hirarkis pada set hasil. � SYS_CONNECT_BY_PATH 23

Data Mining Functions fungsi data mining yang beroperasi pada model yang telah dibangun dengan

Data Mining Functions fungsi data mining yang beroperasi pada model yang telah dibangun dengan menggunakan paket DBMS_DATA_MINING atau Oracle Data Mining Java API. Fungsi data mining SQL adalah: � CLUSTER_ID � CLUSTER_PROBABILITY � CLUSTER_SET � FEATURE_ID � FEATURE_SET � FEATURE_VALUE � PREDICTION_COST � PREDICTION_DETAILS � PREDICTION_PROBABILITY � PREDICTION_SET 24

XML Functions � Fungsi XML beroperasi pada dokumen atau fragmen XML. 25

XML Functions � Fungsi XML beroperasi pada dokumen atau fragmen XML. 25

XML SQL fungsi: APPENDCHILDXML � DELETEXML � DEPTH � EXTRACT (XML) � EXISTSNODE �

XML SQL fungsi: APPENDCHILDXML � DELETEXML � DEPTH � EXTRACT (XML) � EXISTSNODE � EXTRACTVALUE � INSERTCHILDXML � INSERTXMLBEFORE � PATH � SYS_DBURIGEN � SYS_XMLAGG � SYS_XMLGEN � UPDATEXML � XMLAGG � XMLCDATA � XMLCOLATTVAL � XMLCOMMENT � XMLCONCAT � XMLFOREST � XMLPARSE � XMLPI � XMLQUERY � XMLROOT � XMLSEQUENCE � XMLSERIALIZE � XMLTABLE � XMLTRANSFORM � 26

Encoding and Decoding Functions � fungsi encoding dan decoding memungkinkan Anda memeriksa dan decode

Encoding and Decoding Functions � fungsi encoding dan decoding memungkinkan Anda memeriksa dan decode (membaca kode) data dalam database. � DECODE � DUMP � ORA_HASH � VSIZE 27

NULL-Related Functions memfasilitasi penanganan null NULL-Related Functions adalah: � COALESCE � LNNVL � NULLIF

NULL-Related Functions memfasilitasi penanganan null NULL-Related Functions adalah: � COALESCE � LNNVL � NULLIF � NVL 2 28

Environment and Identifier Functions � Lingkungan dan fungsi pengenal memberikan informasi tentang instance dan

Environment and Identifier Functions � Lingkungan dan fungsi pengenal memberikan informasi tentang instance dan sesi. � SYS_CONTEXT � SYS_GUID � SYS_TYPEID � USERENV 29

Aggregate Functions � Fungsi Aggregate mengembalikan baris tunggal hasil berdasarkan kelompok baris, bukan pada

Aggregate Functions � Fungsi Aggregate mengembalikan baris tunggal hasil berdasarkan kelompok baris, bukan pada baris tunggal. Fungsi Aggregate dapat muncul dalam daftar select dan dalam klausa ORDER BY dan HAVING. Mereka umumnya digunakan dengan klausa GROUP BY dalam perintah SELECT, di mana Oracle Database membagi baris dari sebuah tabel query atau view ke dalam grup. Dalam query yang mengandung klausa GROUP BY, unsur-unsur dari daftar select bisa berupa Fungsi Aggregate , ekspresi GROUP BY, konstanta, atau ekspresi yang melibatkan salah satunya. Oracle menerapkan fungsi aggregate untuk setiap kelompok baris dan mengembalikan hasil baris tunggal untuk setiap kelompok. 30

� Jika Anda menghilangkan klausa GROUP BY, maka Oracle menerapkan fungsi aggregate dalam daftar

� Jika Anda menghilangkan klausa GROUP BY, maka Oracle menerapkan fungsi aggregate dalam daftar select untuk semua baris dalam tabel query atau view. Anda menggunakan fungsi aggregate pada klausa HAVING untuk menghilangkan kelompok-kelompok dari output berdasarkan hasil fungsi aggregate, bukan pada nilai-nilai individu baris tabel query atau view. 31

Model Functions dapat digunakan hanya dalam model_clause dari SELECT. Fungsi model: � CV �

Model Functions dapat digunakan hanya dalam model_clause dari SELECT. Fungsi model: � CV � ITERATION_NUMBER � PRESENTNNV � PRESENTV � PREVIOUS 32

Oracle/PLSQL: Creating Functions � Di Oracle Anda dapat membuat fungsi sendiri � Syntax untuk

Oracle/PLSQL: Creating Functions � Di Oracle Anda dapat membuat fungsi sendiri � Syntax untuk membuat Function: 33

� Bila Anda membuat prosedur atau fungsi, Anda dapat menentukan parameter. Ada tiga jenis

� Bila Anda membuat prosedur atau fungsi, Anda dapat menentukan parameter. Ada tiga jenis parameter yang dapat dideklarasikan: 1. IN - Parameter yang dapat direferensikan oleh prosedur atau fungsi. Nilai parameter tersebut tidak dapat ditimpa oleh prosedur atau fungsi. 2. OUT - Parameter yang tidak dapat direferensikan oleh prosedur atau fungsi, tetapi nilai parameter dapat ditimpa oleh prosedur atau fungsi. 3. IN OUT - Parameter yang dapat direferensikan oleh prosedur atau fungsi dan nilai parameter dapat ditimpa oleh prosedur atau fungsi. 34

Functions Without Parameters � Simple Function Creation 35

Functions Without Parameters � Simple Function Creation 35

36

36

Function Without Parameters Used In A SELECT Clause 37

Function Without Parameters Used In A SELECT Clause 37

38

38

Simple Function Used In An INSERT Statement 39

Simple Function Used In An INSERT Statement 39

Simple Function Used In A WHERE Clause 40

Simple Function Used In A WHERE Clause 40

Simple Function Used In A View 41

Simple Function Used In A View 41

Functions With Parameters � Fungsi untuk menentukan apakah sebuah string memiliki format nomor social

Functions With Parameters � Fungsi untuk menentukan apakah sebuah string memiliki format nomor social security yang valid 42

43

43

44

44

Function with OUT parameter 45

Function with OUT parameter 45

Function with IN OUT parameter 46

Function with IN OUT parameter 46

47

47

Stored Procedure 48

Stored Procedure 48

Membuat prosedur PL/SQL tanpa paramater 49

Membuat prosedur PL/SQL tanpa paramater 49

Contoh penerapan dalam Oracle SQL*Plus bisa Anda lihat pada gambar beriktu ini : 50

Contoh penerapan dalam Oracle SQL*Plus bisa Anda lihat pada gambar beriktu ini : 50

Dan untuk melihat hasilnya dari prompt SQL ketikkan EXECUTE nama-prosedure. Atau bisa Anda singkat

Dan untuk melihat hasilnya dari prompt SQL ketikkan EXECUTE nama-prosedure. Atau bisa Anda singkat menjadi EXEC nama-prosedure. 51

Jika saat menjalankan PL/SQL di SQL*Plus Anda tidak mendapatkan hasil apa-apa di layar (dengan

Jika saat menjalankan PL/SQL di SQL*Plus Anda tidak mendapatkan hasil apa-apa di layar (dengan catatan tidak ada kesalahan kode program) maka tuliskan sintak berikut ini di prompt SQL. 52

Jika kode program Anda cukup panjang atau jika terjadi kesalahan dan ingin memperbaikinya ketikkan

Jika kode program Anda cukup panjang atau jika terjadi kesalahan dan ingin memperbaikinya ketikkan “ED” pada prompt SQL setelah itu akan muncul sebuah editor untuk mengedit sintak terakhir yang Anda tuliskan sepertipada gambar dibawah ini. 53

� Untuk kembali ke PL/SQL tekan tombol [ALT+F] lanjutkan dengan menekan tombol [X] jika

� Untuk kembali ke PL/SQL tekan tombol [ALT+F] lanjutkan dengan menekan tombol [X] jika muncul pertanyaan pilih [Yes]. 54

Membuat prosedur PL/SQL dengan parameter � Semua contoh diatas adalah prosedur yang tidak menggunakan

Membuat prosedur PL/SQL dengan parameter � Semua contoh diatas adalah prosedur yang tidak menggunakan parameter, dimana nilai yang diproses sudah ditentukan dan berada di dalam prosedur tersebut. Ada juga prosedur yang sifatnya dinamis dimana nilainya bisa kita ubah sesuai dengan kondisi yang diinginkan. Agar bisa berfungsi seperti itu prosedur tersebut harus menggunakan sebuah paramater sebagai penerima inputan dari user. 55

Single IN Parameter 56

Single IN Parameter 56

Untuk cara pembuatan sama dengan prosedur yang tidak menggunakan parameter. � Contoh penerapannya bisa

Untuk cara pembuatan sama dengan prosedur yang tidak menggunakan parameter. � Contoh penerapannya bisa Anda lihat di bawah ini : 57

Untuk menjalankan prosedure tersebut, pada prompt SQL tuliskan seperti di bawah ini : 58

Untuk menjalankan prosedure tersebut, pada prompt SQL tuliskan seperti di bawah ini : 58

OUT Parameter 59

OUT Parameter 59

60

60

61

61

IN OUT Parameter 62

IN OUT Parameter 62

63

63

Multiple Parameters 64

Multiple Parameters 64

65

65

TUGAS 1. 2. 3. Jelaskan perbedaan antara fungsi dan prosedur! Buat fungsi/prosedur yang bisa

TUGAS 1. 2. 3. Jelaskan perbedaan antara fungsi dan prosedur! Buat fungsi/prosedur yang bisa menampilkan pesan bahwa bilangan yang diinputkan adalah bilangan genap atau ganjil! Buat fungsi/prosedur untuk menghitung jumlah panjang karakter nama yang diinputkan! Handle kesalahan jika yang dimasukkan bukan merupakan karakter 66

Format Pengiriman Tugas � To: siti. mukaromah 4@yahoo. com � Subject: T 2 PBD_NIM_Nama

Format Pengiriman Tugas � To: siti. mukaromah 4@yahoo. com � Subject: T 2 PBD_NIM_Nama Lengkap � Contoh penulisan subject: � T 2 PBD_08410100001_Agung Firmansyah � Dikumpulkan paling lambat: � Hari Selasa, 7 September 2010 Pukul 24. 00 67