以下是SQL Server存储过程的摘录:
ALTER PROCEDURE [dbo].[spAddLogin]
@gameid INT,
@serverid INT,
@memberid VARCHAR(15)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @lastLoginTime datetime
DECLARE @lastLoginDate datetime
DECLARE @isRelogin bit
SELECT
@lastLoginDate = LoginDate,
@lastLoginTime = LoginTime
FROM
Logins
WHERE
LoginDate = (SELECT MAX(LoginDate)
FROM Logins
WHERE MemberID = @memberid AND GameID = @gameid);
当我运行此存储过程并输出时@lastLoginDate,@lastLoginTime我得到的是null。
但是,经过大量的挫折和测试,我发现当我对输入参数的值进行硬编码时@memberid,@gameid它可以正常工作。实际上,如果我硬编码@memberid并保留@gameid参数化设置,它仍然可以正常工作。
它与以下事实有关@memberid:varchar在下面的摘录中它作为null出现,而我可以将@gameid参数保留在其中,因为那是一个int。它是否正确?我究竟做错了什么?
再次,如果我运行完全相同的代码,除了硬代码“ 1234”而不是@memberID参数
SELECT @lastLoginDate = LoginDate, @lastLoginTime = LoginTime
FROM Logins
WHERE LoginDate = (SELECT MAX(LoginDate)
FROM Logins
WHERE MemberID = '1975A' AND GameID = @gameid);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。