开发者社区> 问答> 正文

我无法使用SQL存储过程使用SELECT参数

以下是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);

展开
收起
心有灵_夕 2019-12-06 22:57:35 617 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载