ホームページ  >  記事  >  データベース  >  MySQL カーソルがデータを見つけられない問題と解決策

MySQL カーソルがデータを見つけられない問題と解決策

零下一度
零下一度オリジナル
2017-05-12 11:04:412799ブラウズ

数日前、mysqlカーソルデータの問題に遭遇しました。この問題は 2 日間私を悩ませていましたが、今ではようやく解決しました。

これはテーブル作成文です、2行のデータを挿入します

drop table如果存在testinfo;
创建表testinfo
(
name varchar(10)not null,
年龄int
);
truncate table testinfo;
插入testinfo()值('你',15);
插入testinfo()值('me',20);

queryテーブルデータ

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):列「名前」を空にすることはできません

どこにエラーがあるのか​​わかりません。なぜデータを取得できないのですか? 2日経って、今やっと分かりました。このように変更する必要があります。 l は次のようになります:

Insert testinfo value (@ a, @ b); に変更します。 以上です

変数 a、b を宣言し、値を代入しますしかし、@ a、@ b には値が割り当てられていません...

そのため、問題が発生した場合は、注意深く調べる必要があり、解決するのは簡単です。

【関連するおすすめ】

1.

無料のmysqlオンラインビデオチュートリアル

2.

MySQLの最新マニュアルチュートリアル

3.

以上がMySQL カーソルがデータを見つけられない問題と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。