2010年8月26日

[mysql 15386] SP中でのVARCHARの比較について

Akio Imai 様

返信ありがとうございました。
伊藤です。
実行環境MySQL5.0.67です。

やはり問題ないですよね?
ほかの要素だと思ってます。もうちょっと調べます。

検証までやって頂きありがとうございました。

On Thu, 26 Aug 2010 10:22:18 +0900
Akio Imai <suzuro2045@xxxxx> 様から以下のようなメールをいただきました。。:

> 初めまして。
>
> プロシージャの実行環境が明記されていませんが
> 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@xxxxx>:
> > 最近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@xxxxx
> > -------------------------------------------------
> >
> >
> >


-------------------------------------------------
伊藤崇洋
ito.takahiro.cp@xxxxx
-------------------------------------------------

投稿者 xml-rpc : 2010年8月26日 10:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/97930
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。