0
我尝试创建MS-SQL的程序查询我的比赛,但林还挺stucked ..创建一个SQL过程
比方说, 我有一个用户名和密码行的数据库。 我使用过程查询来选择用户名和密码。现在
ALTER PROCEDURE [dbo].[AccountAuth] /* Procedure Name. */
@m_szUserID varchar(20),
@m_szUserPW varchar(50)
AS
SET NOCOUNT ON;
DECLARE @m_nResultCode int
select @m_nResultCode = 100
BEGIN
SELECT @m_szUserID = username, @m_szUserPW = password
FROM account
WHERE username = @m_szUserID;
END
我的问题: 如果一切是正确的,则该过程将输出的“结果码”
我如何调用该过程查询
BEGIN_DECLARE_SQLUNIT(SP_AccountSelect, "{ call AccountAuth(?,?) }")
BEGIN_VARIABLE()
char m_szUserID[MAX_SIZE_USER_ID + 1];
char m_szUserPW[MAX_SIZE_USER_ID + 1];
int m_nResultCode;
END_VARIABLE()
BEGIN_PARAM(3)
PARAM_ENTRY_STR(SQL_PARAM_INPUT, m_szUserID)
PARAM_ENTRY_STR(SQL_PARAM_INPUT, m_szUserPW)
PARAM_ENTRY(SQL_PARAM_OUTPUT, m_nResultCode)
END_PARAM()
END_DECLARE_SQLUNIT()
过程我到现在是我不知道我如何使IFS像检查用户名是否正确,如果密码是正确的..因为我总是必须做出不同的结果代码。登录错误=结果代码100,错误的用户名= 101,错误的密码= 102 ..
即时搜索小时,但我无法找到任何有用的东西。 有谁知道一个链接,我可以找到有用的东西?
SELECT 1 FROM < - 是1只选择1行? – user3733748
不,它是选择1,因为我使用'Exists'运算符并且存在运算符只返回True/False,如果它找到一个具有通过用户名的行,它将选择1并且存在运算符返回true,当没有行时返回select返回无并且存在运算符返回Null,您将永远不会进入IF块,而是转到ELSE块并返回代码以指示用户名不存在。我希望这有助于,谢谢。 –