0

这种语法有什么问题?

mysql 5.5,phpmyadmin 3.4

delimiter ;;
create procedure foo(a text, b int, c text)
begin
select * from table_a where attribute1 like %a% 
and attribute2 = b
and attribute3 like %c%
end
;;

phpmyadmin 在第 1 行告诉我语法错误,但无论如何它似乎都不起作用。

4

2 回答 2

2

在您的情况下,您甚至不需要更改DELIMITER和使用BEGIN ... END块。您的程序可能看起来像

CREATE PROCEDURE foo(a TEXT, b INT, c TEXT)
SELECT * 
  FROM table_a 
 WHERE attribute1 LIKE CONCAT('%', a, '%')
   AND attribute2 = b
   AND attribute3 LIKE CONCAT('%', c, '%');

这是SQLFiddle演示

于 2013-08-30T14:06:48.983 回答
0

缺少引号。

delimiter ;;

create procedure foo(a text, b int, c text)
begin
  select * from table_a where attribute1 like concat('%', a,' %') 
  and attribute2 = b
  and attribute3 like concat('%', c,' %');
end;;
于 2013-08-30T13:52:41.887 回答