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