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の比較について