Sila bantu saya mengetahui sebab ralat dilaporkan Ini adalah kali pertama saya menulis prosedur tersimpan jenis ini:
pembatas $$
buat prosedur mydb()
mulakan
isytiharkan dbname varchar(50);
deklarasi stop int lalai 0. ;
isytihar kursor kursor untuk (pilih nama daripada nama); //Jadual nama menyimpan nama pangkalan data
isytiharkan PENANGAN TERUS UNTUK SQLSTATE '02000' SET stop = null;
open cur;
fetch cur into dbname; Lintas nama pangkalan data
sambil (berhenti bukan batal) lakukan
begin
declare name varchar(200);
declare stop1 int default 0;
declare cur1 cursor for (select prounit_name from dbname.prounit); //获取prounit表中prounit_name字段内容
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop1 = null;
open cur1;
fetch cur1 into name;
while ( stop1 is not null) do
update prounit set name='abc';
fetch cur1 into name;
end while;
close cur1;
end ;
ambil cur ke dalam dbname;
end while;
close cur;
end ;
delimter $$
Ralat semasa melaksanakan prosedur tersimpan: ERROR 1146 (42S02): Jadual 'dbname.prounit' tidak wujud
kenapa?????
Gesaan jelas, jadual tidak wujud
declare dbname varchar(50);
Nama ditimpa?Mari kita bincangkan beberapa isu tatabahasa.
sementara (berhenti bukan batal) lakukan
-
#🎜🎜#stop
hendaklah kursordbname
dan menilai kursor . Jika tidak tiada rujukan untuk berhentiwhile ( stop is not null) do
中的stop
应该游标dbname
才对,对游标进行判断.不然对stop没有引用过最后一个
The lastend;
,前面你定义了delimiter $$`以`$$
为结束符,应该改为end$$
,最后不要忘了结尾改成delimiter ;
end;
, sebelum anda mentakrifkandelimiter $$` dengan `$$
sebagai aksara akhir, ia harus ditukar kepadatamatkan $$
, akhirnya jangan lupa untuk menukar pengakhiran kepadadelimiter;