我正在为mysql认证学习,并且我学习的方式是通过做,我之前通过一个问题失败了,如果我有更多的关注存储过程我会得到它。任何我正在编造一些时髦的场景,我实际上会使用,所以这里是我难以理解的场景。当我调用2 OUT参数时,MySQL存储过程返回NULL值 - 请参阅代码
/*TABLE STRUCTURE */
CREATE TABLE `members` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`name` varchar(255) default NULL,
`email` varchar(255) default NULL,
PRIMARY KEY (`id`)
);
/* PROCEDURE STRUCTURE */
USE WOL_STATISTICS;
DELIMITER $$
CREATE PROCEDURE `select_user`
(
IN `idnum` INT(11),
OUT `name` VARCHAR(255),
OUT `email` VARCHAR(255)
)
SQL SECURITY DEFINER
LANGUAGE SQL
NOT DETERMINISTIC
BEGIN
SELECT `name`, `email` FROM `members` WHERE `id` = `idnum`;
END $$
DELIMITER ;
/* CALL STATEMENT */
CALL select_user(20, @name, @email);
SELECT @name, @email;
我总是找回空值谁能告诉我为什么?
嗨,对不起,我实际上删除了第二个ID时,我创建了我测试的表,这是一个错误。我仍然迷失。我已经将out参数重命名为OUT'outname' VARCHAR(255), OUT'outemail' VARCHAR(255),我试图使用以下调用select_user(20,'@outname','@outemail' ); SELECT'@outname','@outemail';但仍然null null – user2610856
像Thorsten说,分配值给你的变量。做'SELECT name,email INTO outname,outemail FROM ...'(如果我记得语法正确)。 – fancyPants