mysql:15385
From: Akio Imai <Akio Imai <suzuro2045@xxxxxxxxxx>>
Date: Thu, 26 Aug 2010 10:22:18 +0900
Subject: [mysql 15385] Re: [mysql 15384] SP中でのVARCHARの比較について
初めまして。 プロシージャの実行環境が明記されていませんが MySQL 5.0.77 で実行してみたところ、自分の環境では特に問題が発生しませんでした。 以下、ちょっと煩雑ですが、実行したクエリと結果になります。 CREATE TABLE `test` (`id` int(11) NOT NULL auto_increment, `txt` varchar(16) NOT NULL, KEY `idx_test_id`(`id`)) ENGINE=InnoDB; insert into test values (0,'a'),(0,'b'),(0,'c'); DROP PROCEDURE IF EXISTS proc_test; delimiter // CREATE PROCEDURE proc_test( in_exec_kbn varchar(16) ) BEGIN select count(*) into @my_count from test where txt=in_exec_kbn; select @my_count; END; // delimiter ; mysql> call proc_test('a'); +-----------+ | @my_count | +-----------+ | 1 | +-----------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) 2010年8月26日9:28 こんにちは伊藤です <ito.takahiro.cp@xxxxxxxxxx>: > 最近MySQLのストアドに取り組み始めました。 > 伊藤です。 > > ストアド中のSQL文で分からない点がありますので質問させてください。 > たぶん単純なことだと思います。 > 下記のようなvarchar型のTBL.colに変数をそのまま比較させると落ちるようです。 > INT型なら同じようなことはありません。varcharはそのままの比較って出来なかっ > たりするのでしょうか? > > > > 落ちる方 > CREATE PROCEDURE test( > in_exec_kbn varchar(16) > ) > BEGIN > > select count(*) into @my_count from TBL where col=in_exec_kbn; > > END; > > > 落ちない方(あたり前ですが)もちろん意図した結果は得られません。 > CREATE PROCEDURE test( > in_exec_kbn varchar(16) > ) > BEGIN > > select count(*) into @my_count from TBL where col='in_exec_kbn'; > > END; > > > > ------------------------------------------------- > 伊藤崇洋 > ito.takahiro.cp@xxxxxxxxxx > ------------------------------------------------- > > >
15384 2010-08-26 09:28 [こんにちは伊藤です <] SP中でのVARCHARの比較について -> 15385 2010-08-26 10:22 ┗[Akio Imai <suzuro204] Re: [mysql 15384] SP中でのVARCHARの比較について 15386 2010-08-26 10:35 ┗[こんにちは伊藤です <] SP中でのVARCHARの比較について