linux - laporan ralat prosedur disimpan mysql semasa memanggil
滿天的星座
滿天的星座 2017-05-31 10:37:32
0
2
860

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?????

滿天的星座
滿天的星座

membalas semua(2)
淡淡烟草味

Gesaan jelas, jadual tidak wujud
declare dbname varchar(50);Nama ditimpa?

迷茫

Mari kita bincangkan beberapa isu tatabahasa.

    sementara (berhenti bukan batal) lakukan stop hendaklah kursor dbname dan menilai kursor . Jika tidak tiada rujukan untuk berhenti
  1. while ( stop is not null) do中的stop应该游标dbname才对,对游标进行判断.不然对stop没有引用过

  2. 最后一个end;,前面你定义了delimiter $$`以`$$为结束符,应该改为end$$,最后不要忘了结尾改成delimiter ;

    The last end;, sebelum anda mentakrifkan delimiter $$` dengan `$$ sebagai aksara akhir, ia harus ditukar kepada tamatkan $$, akhirnya jangan lupa untuk menukar pengakhiran kepada delimiter;
#🎜🎜#
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan