0

名前(names)のテーブルがあります。ids(user)を保持する別のものがあります。名前テーブルの名前が特定の条件に一致する場合にユーザーテーブルにIDを挿入することになっている条件付き構文(case-whenステートメント)があります。

私はlike %文字列パターンを一致させるために使用しました:

delimiter //
create procedure name_matching (in names.name varchar, out id int) 
begin  
  case 
    when names.name like 's%_%a' then
      insert into user (id) values ('1'); 
    else
      insert into user (id) values ('2'); 
  end case  
end//

これにより、mysqlターミナルでエラー1064が出力されます。

これを別の方法で行う方法はありますか?

4

1 に答える 1

1

手順にはいくつかの小さな問題があります。の後にセミコロンが必要で、入力パラメーター リストでend caseのフィールド サイズを指定する必要がありますvarchar。MySQL 5.1 では次のように動作します (「動作する」という意味: プロシージャの作成時にエラーが発生しません)。

delimiter $$
create procedure name_matching (in name varchar(500)) 
begin
  case
    when name like 's%_%a' then
      insert into user (id) values (1); 
    else
      insert into user (id) values (2); 
  end case;
end $$
于 2011-10-20T22:49:05.083 に答える