Vor ein paar Tagen bin ich auf das Problem gestoßen, dass der MySQL-Cursor keine Daten finden konnte. Dieses Problem hat mich zwei Tage lang gestört, und jetzt habe ich es endlich gelöst .
Dies ist eine Anweisung zur Tabellenerstellung. Fügen Sie zwei Datenzeilen ein
drop table如果存在testinfo; 创建表testinfo ( name varchar(10)not null, 年龄int ); truncate table testinfo; 插入testinfo()值('你',15); 插入testinfo()值('me',20);
Fragen Sie die Tabellendaten von
mysql> select name,age from testinfo; + ------ + ------ + | 名称| 年龄| + ------ + ------ + | 你| 15 | | 我| 20 | + ------ + ------ + 这是使用游标的存储过程 drop procedure if exists test_proc; 分隔符// 创建过程test_proc() 开始 DECLARE done int default false; DECLARE一个char(10); DECLARE b int; DECLARE cur1游标用于选择名称,age from testinfo; DECLARE继续处理SQLSTATE'02000'set done = true; 打开cur1; read_loop:loop FETCh cur1进入a,b; 如果这样做了 离开read_loop 万一; 选择@ a,@ b; 插入testinfo值(@ a,@ b); 端环; 关闭cur1; 结束 // 分隔符 调用test_proc();ab
Das Ausführungsergebnis ist wie folgt
mysql> \。/opt/mysql/test_proc.sql 查询行,受影响的0行,1个警告(0.00秒) 查询行,受影响(0.02秒)0行 + ------ + ------ + | @a | @b | + ------ + ------ + | NULL | NULL | + ------ + ------ + 1行集(0.00秒)
Da ist ein Fehler oben: 1048 (23000): Spalte „Name“ darf nicht leer sein
Ich weiß nicht Ich weiß nicht, wo der Fehler liegt. Warum nimmst du
Keine Daten? Es sind zwei Tage vergangen und jetzt weiß ich es endlich. Es sollte wie folgt geändert werden:
Fügen Sie den Testinfo-Wert ein (@a, @b); ändern Sie ihn, um den Testinfo-Wert einzufügen (a, b); das ist es Die Variablen a, b und dann passieren Der Cursor weist ihm einen Wert zu, aber er weist @ a, @ b keinen Wert zu ...
Kostenloses MySQL-Online-Video-Tutorial
2.Neuestes MySQL-Handbuch-Tutorial
3.Das obige ist der detaillierte Inhalt vonDer MySQL-Cursor kann kein Datenproblem und keine Lösung finden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!