[英]Can't create stored procedure mysql maybe if else syntax
我尝试编写这样的存储过程,但是不起作用:
DROP PROCEDURE IF EXISTS `my_test`;
CREATE PROCEDURE `my_test`(
IN my_in_var VARCHAR(255),
OUT my_out_var VARCHAR(255)
)
BEGIN
IF(in_var == 'my_in_value') THEN
SET my_out_var = 'my_out_value1';
ELSE
SET my_out_var = 'my_out_value2';
END IF;
END
我尝试使用PDO从php执行
$conn = new PDO("mysql:host=".$mysql_host.";dbname=".$mysql_bd, $mysql_user, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec($sql);
没有错误,但我在MySql服务器上看不到
SHOW CREATE PROCEDURE my_test
所以我试图将其复制粘贴到phpmyadmin的SQL窗口中,并且出现以下语法错误:
1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在'=='my_in_value'附近使用正确的语法)然后在第6行设置my_out_var ='my_out_value1'
正确的语法是什么? 为什么PDO不显示错误?
欢迎任何帮助-谢谢
注意,已经向我指出,在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
因此,您需要确定以上内容的目的。
您在使用double =
遇到语法错误。 而且您可能在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.