mysql存储函数参数语法错误

时间:2013-08-30 13:46:49

标签: mysql sql database phpmyadmin

这种语法有什么问题?

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行告诉我错误的语法,但无论如何它似乎都不起作用。

2 个答案:

答案 0 :(得分: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 演示

答案 1 :(得分: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;;