无法创建存储过程mysql也许if else语法

时间:2016-07-07 03:14:28

标签: php mysql stored-procedures pdo

我尝试编写这样的存储过程,但它不起作用:

SHOW CREATE PROCEDURE my_test

我尝试从PDO执行PDO

.navBar

没有错误,但我无法在MySql服务器上看到

float

所以我试着将它粘贴到phpmyadmin的SQL窗口中,我得到了这个语法错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'=='my_in_value'附近使用正确的语法。)那么   在第6行设置my_out_var ='my_out_value1''

正确的语法是什么?为什么PDO没有显示错误?

欢迎任何帮助 - 谢谢

1 个答案:

答案 0 :(得分:1)

请注意,我已经向我指出,在我不使用的PHPMyAdmin中,下面的DELIMITER不是必需的。因此,DELIMITER是一个客户端事物,例如MySQL Workbench之类的需要。

存储过程:

DROP PROCEDURE IF EXISTS `my_test`;
DELIMITER $$
CREATE PROCEDURE `my_test`(
  IN my_in_var VARCHAR(255),
  OUT my_out_var VARCHAR(255)
)
BEGIN
  IF (my_in_var = 'my_in_value') THEN
    SET my_out_var = 'my_out_value1';
  ELSE
    SET my_out_var = 'my_out_value2';
  END IF;
END$$
DELIMITER ;

测试:

set @outme='';
call my_test('lizard',@outme);
select @outme;
-- my_out_value2

set @outme='';
call my_test('my_in_value',@outme);
select @outme;
-- my_out_value1

所以你需要弄清楚你的意图是什么。

=语法错误。你可能在in_var中输入了一个不存在的拼写错误。

PHPMyAdmin(不需要DELIMITER,所以我被告知):

DROP PROCEDURE IF EXISTS `my_test`;
CREATE PROCEDURE `my_test`(
  IN my_in_var VARCHAR(255),
  OUT my_out_var VARCHAR(255)
)
BEGIN
  IF (my_in_var = 'my_in_value') THEN
    SET my_out_var = 'my_out_value1';
  ELSE
    SET my_out_var = 'my_out_value2';
  END IF;
END