Mas Faridh,

Logikanya menurut anda memang betul, tapi salah menurut Oracle.
1. SELECT ...INTO.. FROM hanya betul kalau record yg dikembalikan cuma satu 
record. Nggak boleh kurang nggak boleh lebih. Harga pas, SATU. Nggak boleh 
ditawar lagi.
Jadi pada contoh yg anda berikan akan menghasilkan error: TOO MANY ROWS.

2. Di Oracle urutan pengembalian data tidak selalu sama dengan urutan pemasukan 
data (pada saat insert).Jadi sebaiknya gunakan ORDER BY supaya urutannya sesuai 
dgn yg diinginkan.

Solusi:
1. Tambahkan flag column. Yg mana nilainya akan sebut saja  "1" apabila sedang 
dipakai/edit oleh user, "0" apabila sudah di release.

2. Tambahkan ROWNUM=1 pada where clause untuk memastikan record yg diambil 
hanya 1. Dan juga tambahkan where flag_column=0. Dan ORDER BY supaya urutannya 
sesuai dgn yg diinginkan.

3. Tambahkan exception, kalau tidak ada record yg bisa di pegang(misal: ada 4 
record dan diakses oleh lebih dari 4 user sekaligus, maka user ke 5,6,7... 
tidak akan mendapatkan record)

4. Kalau anda menggunakan Oracle Form, apabila ada sebuah record diedit/lock 
oleh seseorang, maka user lain tidak bisa mengeditnya.
Utk ini gunakan WHEN-NEW-RECORD-INSTANCE ...isinya lock record ybs.

5. ...???...

cmiiw,
Bowo

--- In [email protected], Faridh Wisanggeni <faridh_wisangg...@...> 
wrote:
>
> Dear All,
> 
> Mohon bantuannya, ini saya ada case untuk mengambil data nomor dari suatu 
> table
> 
> table1
> Nomor        Nama         ORG
> 35689          Junaidi       100
> 35856          Indra          100
> 35999          Syaifudin   100
> 35556          Joni              100
> 
> Jika kita ingin menginput field nomor pada textitem maka querynya adalah sbb :
> 
> begin
> Select nomor into TEXTITEM21.TEXT from Table1 where org=100;
> 
> end;
> 
> Logikanya adalah si TEXTITEM21 tersebut pasti isinya 35689 karena itu 
> merupakan row paling pertama.
> Namun jika usernya lebih dari 1. Dan semua user tersebut melakukan klik data 
> (menjalankan query diatas)
> Tentunya si user akan sama-sama mendapatkan nomor 35689, dimana seharusnya si 
> user yg lain dapat nomor lain yang belum dibuka oleh user pertama.
> 
> Kira-kira dari para master adakah sharing knowledgenya 
> Supaya setiap user punya nomor yg belum dibuka (di select) oleh user lain
> Jadi pada saat user 1 menselect data maka dia akan dapat 35689
> Lalu pada saat user 2 menselect data maka dia akan dapat 35856 dst.
> 
> 
> Mohon bantuannya yach....   
> 
> 
> Faridh Wisanggeni
> 
> 
> 
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke