gpt4 book ai didi

mysql - SQL Server 的 SELECT col1=col2 在 MySQL 中意味着什么?

转载 作者:行者123 更新时间:2023-11-29 06:59:46 24 4
gpt4 key购买 nike

我在 SQL Server 中有一个存储过程,如下所示:

 ....
Declare UserId VARCHAR(30);

Select UserId=nrID
from tblUsers
where Email = in_email;

UserId = nrID 是否意味着 tblUsers 中的 nrID 值被传递给 UserId,其中 电子邮件=in_email

如果是这样,MySQL 中的等效项是什么?因为MySQL似乎将“UserId=nrID”视为列名而不传递值。

编辑:这是我的完整代码

DELIMITER //
create procedure spResetPassword (IN in_email VARCHAR (100))
Begin
Declare UserId VARCHAR(30);
Declare GUID varchar(64);

Select nrId as UserId #nrID is in the tblUsers
from tblUsers
where Email = in_email;

if (UserId IS NOT NULL) then
Set GUID = UUID();

Insert into tblResetPasswordRequests(ID, UserID, ResetRequestDateTime) Values(GUID, UserId, NOW());
Select 1 as ReturnCode, GUID as UniqueId, in_email as Email;
else
SELECT 0 as ReturnCode, NULL as UniqueId, NULL as Email;
end if;
end; //
DELIMITER ;

但是,每次我调用 spResetPassword('existingemail@gmail.com') 时,它总是转到 ELSE 语句。

最佳答案

在 MySQL 存储过程中,我们可以通过使用 SELECT ... INTO 将返回值分配给过程变量来完成类似的操作。

CREATE PROCEDURE foo(IN in_email VARCHAR(255))
AS
BEGIN

DECLARE UserId VARCHAR(30);

SELECT t.nrID
FROM tblUsers t
WHERE t.Email = in_email
ORDER BY t.nrID
LIMIT 1
INTO UserId ;
<小时/>

变量可以在 MySQL 存储程序的上下文中声明。这些变量仅在封闭 block 内“在范围内”。过程中声明的变量在过程外部不可用。

MySQL 还提供用户定义变量,其名称以 at 符号 (@) 开头。用户定义的变量可以在过程中引用,但它们没有声明,并且它们的作用范围是整个 session ,而不仅仅是过程。

关于mysql - SQL Server 的 SELECT col1=col2 在 MySQL 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com