Rumah  >  Soal Jawab  >  teks badan

linux - laporan ralat prosedur disimpan mysql semasa memanggil

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

滿天的星座滿天的星座2697 hari yang lalu806

membalas semua(2)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-05-31 10:39:32

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

    balas
    0
  • 迷茫

    迷茫2017-05-31 10:39:32

    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;
    #🎜🎜#

    balas
    0
  • Batalbalas