며칠 전 mysql 커서가 데이터를 찾을 수 없는 문제를 겪었습니다. 이 문제로 인해 이틀 동안 괴로움을 겪었는데, 이제 드디어 해결되었습니다. .
테이블 생성문입니다. 두 행의 데이터를 삽입합니다.
drop table如果存在testinfo; 创建表testinfo ( name varchar(10)not null, 年龄int ); truncate table testinfo; 插入testinfo()值('你',15); 插入testinfo()值('me',20);
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();
의 테이블 데이터를 쿼리합니다. 실행 결과는 다음과 같습니다.
mysql> \。/opt/mysql/test_proc.sql 查询行,受影响的0行,1个警告(0.00秒) 查询行,受影响(0.02秒)0行 + ------ + ------ + | @a | @b | + ------ + ------ + | NULL | NULL | + ------ + ------ + 1行集(0.00秒)
위에 오류가 있습니다: 1048(23000): 'name' 열은 비워둘 수 없습니다.
어디서 오류인지 모르겠습니다. , 왜
에서 데이터를 가져올 수 없나요? 이틀이 지났는데 이제야 알겠어요. l은 다음과 같이 변경되어야 합니다.
testinfo 값(@a, @b)을 삽입하고 testinfo 값(a, b)을 삽입하도록 변경합니다.
변수 a, b를 입력한 후 통과 커서는 값을 지정하지만 @a, @b에는 값을 지정하지 않습니다...
그래서 문제가 발생하면 다음과 같이 하면 쉽게 해결할 수 있습니다. 주의 깊게 살펴보세요.
[관련 추천]
위 내용은 MySQL 커서가 데이터 문제 및 해결 방법을 찾을 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!