create table tabel_array_int
(
id_session_array int unsigned not null primary key,
index_array int unsigned not null primary key,
nilai_array int unsigned not null
) engine=memory;
delimiter $
create function get_tabel_array_int(in session int, in idx int) returns int
begin
return (select nilai_array from tabel_array_int where id_session_array=session and index_array=idx);
end$
create procedure set_tabel_array_int(in session int, inout idx int, in nilai int)
begin
insert into tabel_array_int values (session, idx, nilai);
set idx := idx + 1;
end$$
create procedure destroy_tabel_array_int(in session int)
begin
delete from tabel_array_int where id_session_array=session;
end$$
delimiter ;
id_session_array adalah id session dari array, untuk membedakan yang memiliki array tersebut. index_array adalah no indeks dari array. nilai_array adalah nilai yang disimpan ke dalam array. id_session_array adalah id unik yang dapat dibuat menggunakan rand() yang menghasilkan angka acak dari 0 hingga 1, sedangkan nilai int maksimal sekitar 4,5 milyar, sehingga untuk membuat id yang acak dapat menggunakan:
delimiter $$contoh penggunaan:
create function id_gen () returns int
begin
return ceil(rand() * 4000000000);
end$$
delimiter ;
delimiter $Untuk array yang memiliki dimensi lebih dari 1, maka tinggal ditambahkan field nilai_array_2, ..., nilai_array_n
create procedure contoh_penggunaan()
begin
declare id_sess int;
declare idx_arr int;
set idx_arr := 0;
set id_sess := id_gen();
#contoh memasukkan nilai ke tabel_array_int
call set_tabel_array_int(id_sess, idx_arr, 100);
call set_tabel_array_int(id_sess, idx_arr, 200);
call set_tabel_array_int(id_sess, idx_arr, 300);
#contoh mendapatkan nilai dari tabel_array_int
get_tabel_array_int(id_sess, 2); #hasilnya adalah 200
#selesai
call destroy_tabel_array_int(id_sess);
end;
delimiter ;
Tidak ada komentar:
Posting Komentar