Wednesday, 27 November 2013

77. Prosedur dalam PL-SQL

10. PROSEDUR

PL / SQL prosedur berperilaku sangat mirip dengan prosedur dalam bahasa
pemrograman lain.Berikut adalah contoh SQL / prosedur PL addtuple1 itu, diberi i integer, menyisipkan tuple (i,'xxx') ke dalam hubungan contoh berikut:
CREATE TABLE T2 (
a INTEGER, INTEGER suatu,
b CHAR(10) B CHAR (10)
); );
CREATE PROCEDURE addtuple1(i IN NUMBER) SEBAGAI
BEGIN
INSERT INTO T2 VALUES(i, 'xxx');
END addtuple1;
. .
run;
Prosedur diperkenalkan oleh kata kunci CREATE PROSEDUR diikuti oleh nama prosedur dan
parameternya. Sebuah opsi adalah mengikuti CREATE dengan OR REPLACE. Keuntungan
melakukannya adalah yang seharusnya Anda telah membuat definisi, Anda tidak akan mendapatkan
kesalahan. Di sisi lain, harus definisi sebelumnya merupakan prosedur yang berbeda dari nama yang
sama, Anda tidak akan diperingatkan, dan prosedur lama akan hilang.
Ada dapat sejumlah parameter, masing-masing diikuti dengan mode dan ketik. Modus yang
mungkin adalah IN (read-only), OUT (write-only), and INOUT (read and write). Catatan Berbeda
dengan specifier ketik sebuah variabel / deklarasi PL SQL, specifier ketik dalam sebuah deklarasi
10
parameter harus tak terbatas . Sebagai contoh, CHAR (10) dan VARCHAR (20) adalah ilegal; CHAR
atau VARCHAR harus digunakan sebagai gantinya. Panjang sebenarnya parameter tergantung pada
argumen yang sesuai yang berlalu di saat prosedur dipanggil.
Mengikuti argumen adalah kata kunci AS (IS adalah sinonim). Then Kemudian datang
tubuh, yang pada dasarnya adalah sebuah PL / SQL blok. Kami telah mengulang nama prosedur
setelah END, tapi ini adalah opsional. Namun, bagian MENYATAKAN tidak harus dimulai dengan
LAPORKAN kata kunci. Sebaliknya, berikut SEBAGAI kita memiliki:
... AS
<local_var_declarations>
BEGIN
<procedure_body>
END;
. .
run;
Ini dijalankan pada akhir menjalankan pernyataan yang menciptakan prosedur; tidak
menjalankan prosedur. Untuk melaksanakan prosedur ini, gunakan lain PL / SQL, di mana
prosedur dipanggil sebagai pernyataan dieksekusi. Sebagai contoh:
BEGIN addtuple1(99); END;
. .
run;
Prosedur berikut juga menyisipkan tuple ke T2, tetapi mengambil keduanya komponen
sebagai argumen:
CREATE PROCEDURE addtuple2(
x T2.a%TYPE,
y T2.b%TYPE)
AS
11
BEGIN
INSERT INTO T2(a, b)
VALUES(x, y);
END addtuple2;
run;
Sekarang, untuk menambahkan tupel (10, 'abc') to T2:
BEGIN
addtuple2(10, 'abc');
END;
. .
run;
Berikut ini menggambarkan penggunaan parameter OUT:
CREATE TABLE T3 (
a INTEGER,
b INTEGER
);
CREATE PROCEDURE addtuple3(a NUMBER, b OUT NUMBER)
AS
BEGIN
b: = 4;
INSERT INTO T3 VALUES(a, b);
12
END;
. .
run;
DECLARE
v NUMBER;
BEGIN
addtuple3(10, v);
END;
. .
run;

Perhatikan bahwa menempatkan nilai ke parameter dinyatakan sebagai OUT atau IN
menyebabkan argumen input yang sesuai untuk ditulis. Karena itu, argumen masukan atau IN
parameter OUT harus sesuatu dengan lvalue ", seperti variabel" seperti v dalam contoh di atas. A
constant or a literal argument should not be passed in for an OUT / INOUT parameter. Sebuah
konstan atau sebuah argumen literal tidak boleh disahkan pada untuk IN / OUT parameter.
Kita juga dapat menulis fungsi daripada prosedur. Dalam deklarasi fungsi, kita mengikuti
daftar parameter oleh RETURN dan jenis nilai kembali:
CREATE FUNCTION <func_name>(<param_list>) RETURN <return_type> AS ...
Dalam tubuh dari definisi fungsi, "RETURN <expression>;" keluar dari fungsi dan
mengembalikan nilai <expression>.
Untuk mengetahui prosedur apa dan fungsi-fungsi yang telah Anda buat, gunakan query
SQL berikut:
select object_type, object_name
13
from user_objects
where object_type = 'PROCEDURE'
or object_type = 'FUNCTION';
Untuk mengurangi salah satu prosedur yang tersimpan / fungsi:
drop procedure <procedure_name>; drop function <function_name>;


No comments:

Post a Comment