У меня есть следующая хранимая процедура SQL Server 2012 Express:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Andy Armstrong
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE db_CheckLogin
-- Add the parameters for the stored procedure here
@LoginName NVARCHAR(15),
@Password NVARCHAR(15),
@ReturnCode UNIQUEIDENTIFIER OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT UserID=@ReturnCode FROM tblMemberLogin WHERE LoginName = @LoginName AND LoginPassword = @Password;
END
GO
Я вызываю его из хранимой процедуры .NET С# следующим образом:
// Create Command Interface
SqlCommand cmdStoredProc = new SqlCommand("db_CheckLogin", objConnection);
cmdStoredProc.CommandType = CommandType.StoredProcedure;
// Fill The Parameters Collection Based Upon Stored Procedure.
SqlParameter workParam = null;
workParam = cmdStoredProc.Parameters.Add("@LoginName", SqlDbType.NVarChar, 15);
workParam = cmdStoredProc.Parameters.Add("@Password", SqlDbType.NVarChar, 15);
// Prepare Output Parameter
workParam = cmdStoredProc.Parameters.Add("@ReturnCode", SqlDbType.UniqueIdentifier);
workParam.Direction = ParameterDirection.Output;
// Set Values For Our Procedure
cmdStoredProc.Parameters["@LoginName"].Value = ctrlUsername.Text;
cmdStoredProc.Parameters["@Password"].Value = ctrlPassword.Text;
// Exec Procedure
cmdStoredProc.ExecuteNonQuery();
Однако по какой-то причине он не возвращает строку, которую я ожидал.
Схема для tblMemberLogin выглядит следующим образом:
UserID = уникальный идентификатор pk, LoginName = NVARCHAR(15) LoginPassword = NVARCHAR(15)
У меня есть одна строка в этой таблице с именем пользователя myUser
и паролем passw0rd
.
однако запуск кода с этим возвращает 0 строк. Запуск хранимой процедуры вручную также не работает, если выполняется запрос типа:
ВЫБЕРИТЕ UserID ИЗ tblMemberLogin, ГДЕ LoginName = 'myUser' AND LoginPassword = 'passw0rd' работает отлично! Пожалуйста, помогите мне определить, где я ошибаюсь.