mysql存储函数简单登录,从集合中提取int
这是我的第一个mySQL存储函数,因为我总是用php来管理这些东西。 我想要一个功能,检查用户是否可以登录到我的客户端区域。 我写了上面的代码:mysql存储函数简单登录,从集合中提取int,mysql,stored-functions,Mysql,Stored Functions,这是我的第一个mySQL存储函数,因为我总是用php来管理这些东西。 我想要一个功能,检查用户是否可以登录到我的客户端区域。 我写了上面的代码: DELIMITER $$ CREATE FUNCTION `A05`.`login` (user VARCHAR(64),pass VARCHAR(64)) RETURNS INT BEGIN declare num_rows int; declare id int; SELECT (@num_rows:=COUNT(*)),
DELIMITER $$
CREATE FUNCTION `A05`.`login` (user VARCHAR(64),pass VARCHAR(64)) RETURNS INT
BEGIN
declare num_rows int;
declare id int;
SELECT (@num_rows:=COUNT(*)),(@id:=`Credential_id`) FROM `A05`.`Credentials` where `Credential_UserName` = user;
if num_rows = 0 then
-- user not present
return (-1);
end if;
-- user present, checking password
SELECT (@num_rows:=COUNT(*)),(@id:=`Credential_id`) FROM `A05`.`Credentials` where `Credential_id` = id AND `Credential_PASSWORD` = SHA1(pass);
if num_rows = 0 then
-- user presente, password incorrect
INSERT INTO `a05`.`Events` (
`Event_id` ,
`Event_RegistrationDate` ,
`Event_VariationDate` ,
`Event_State`,
`Event_Notes`,
`Event_SenderId`,
`Event_Type`
)
VALUES (
NULL , NOW(), NOW(), 'wp', NULL, id, 1
);
return (-2);
end if;
-- user present, password correct
UPDATE `A05`.`Credentials` SET `Credential_LastAccess`=NOW() where `Credential_id` = id;
INSERT INTO `a05`.`Events` (
`Event_id` ,
`Event_RegistrationDate` ,
`Event_VariationDate` ,
`Event_State`,
`Event_Notes`,
`Event_SenderId`,
`Event_Type`
)
VALUES (
NULL , NOW(), NOW(), 'ok', NULL, id, 0
);
return id;
END
我认为语法应该是正确的,除了最后一个语句returnid,因为我返回的是一个集合而不是整数。
问题是,当我尝试在mysql上存储此函数时,会出现以下错误:
Error 1415: Not allowed to return a result set from a function
然后,出于测试目的,我将最后一条语句从“return id”更改为“return 0”,但我一直收到相同的错误。
可能是一个新手错误,因为这是我第一次使用sql“高级”脚本。
提前非常感谢 在函数中的
user
的所有实例周围使用反勾号。它是一个保留关键字。