[前][次][番号順一覧][スレッド一覧]

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