Saat menjalankan kode berikut, itu hanya mengatakan prosedur selesai dan tidak mencetak informasi yang saya inginkan (firstName, lastName) dan kemudian nilai lain dari kueri pemilihan dalam tabel di bawah ini.
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char)
AS
CURSOR quote_recs IS
SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r,
rolequote rq, actor a, movie m
where
rq.quoteID = q.quoteID
AND
rq.roleID = r.roleID
AND
r.actorID = a.actorID
AND
r.movieID = m.movieID
AND
a.actorID = id_actor;
BEGIN
FOR row IN quote_recs LOOP
DBMS_OUTPUT.PUT_LINE('a.firstName' || 'a.lastName');
end loop;
END PRINT_ACTOR_QUOTES;
/
Saat mengatur output server, saya mengerti
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
berkali-kali!
sumber
set serveroutput on
perintah sebelum menjalankan prosedur di SQL * Plus.SELECT
pernyataan pada prompt perintah SQL Plus, pernyataan SQL dijalankan, data dikembalikan, tetapi data tidak ditampilkan di SQL Plus? Tampaknya tidak mungkin kecuali Anda bermain-main denganautotrace
pengaturan dalam hal ini Anda mungkin telah melihat rencana kueri dan statistik eksekusi daripada hasil kueri. Namun, kami mulai agak jauh dari pertanyaan awal Anda.sumber
pernyataan ini
berarti mencetak string apa adanya .. hapus tanda kutip untuk mendapatkan nilai yang akan dicetak. Jadi sintaks yang benar adalah
sumber
Atur Query seperti di bawah ini pada baris pertama
SET SERVEROUTPUT ON
sumber
Saya menggunakan Oracle SQL Developer,
Dalam alat ini, saya harus mengaktifkan keluaran DBMS untuk melihat hasil yang dicetak oleh dbms_output.put_line
Anda bisa menemukan opsi ini di panel hasil tempat hasil kueri lain ditampilkan. jadi, di panel result, saya punya 7 tab. Tab pertama dinamai Hasil, berikutnya adalah Output Script dan seterusnya. Dari sini Anda dapat menemukan tab bernama "DBMS Output" pilih tab ini, kemudian ikon pertama (tampak seperti ikon dialog) adalah Aktifkan Output DBMS . Klik ikon ini. Kemudian Anda menjalankan PL / SQL, lalu pilih "tab Output DBMS, Anda harus dapat melihat hasilnya di sana.
sumber
Semuanya berkonsentrasi pada for loop tetapi jika kita menggunakan loop normal maka kita harus menggunakan variabel cursor record. Berikut ini adalah kode yang dimodifikasi
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char) AS CURSOR quote_recs IS SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r, rolequote rq, actor a, movie m where rq.quoteID = q.quoteID AND rq.roleID = r.roleID AND r.actorID = a.actorID AND r.movieID = m.movieID AND a.actorID = id_actor; recd quote_recs%rowtype; BEGIN open quote_recs; LOOP fetch quote_recs into recs; exit when quote_recs%notfound; DBMS_OUTPUT.PUT_LINE(recd.firstName||recd.lastName); end loop; close quote_recs; END PRINT_ACTOR_QUOTES; /
sumber