#sql-server #linq #stored-procedures #parameters #output
#sql-сервер #linq #хранимые процедуры #параметры #вывод
Вопрос:
Я пишу код на entity Framework 6.0, linq на asp.net , платформа sql Server.
Я написал хранимую процедуру, которая должна возвращать выходное значение (0 или 1)
Сначала я написал SP, используя выходной параметр следующим образом:
ALTER proc [dbo].[checkUser]
(
@oNo int,
@pw varchar(50),
@val int output
)
as
begin
if EXISTS (select * from Users where @oNo=sNo and @pw=password)
begin
set @val=1
end
if not exists(select * from Users where @oNo=sNo and @pw=password)
begin
set @val=0
end
end
Не сработало. Оно вернуло значение -1. Затем я изменил SP следующим образом:
ALTER proc [dbo].[checkUser]
(
@oNo int,
@pw varchar(50)
)
as
begin
if EXISTS (select * from Users where @oNo=sNo and @pw=password)
begin
return 1
end
else
begin
return 0
end
end
Хранимая процедура каждого способа возвращает только -1
Не могли бы вы мне помочь, пожалуйста, где я делаю неправильно?
Комментарии:
1. Вывод параметра объекта = новый параметр объекта(«val», typeof(int)); переменная d = context.CheckUser(преобразовать. ToInt32(txtONo.Text), txtPw.Text, вывод); переменная d=context.CheckUser(преобразовать. ToInt32(txtONo.Text),txtPw.Text); if (d==1) { // } else if(d==0) { // }
2. вы используете импорт функции?
3. Ну, я сопоставил базу данных с entity Framework. Итак, хранимая процедура, которую я написал на стороне sql, существует в function import с тем же именем, что и на стороне sql; называется ‘CheckUser’.
4. К сожалению, код был таким: ObjectParameter output = новый ObjectParameter(«val», typeof(int)); переменная d = context.CheckUser(Преобразовать. ToInt32(txtONo.Text), txtPw.Text, вывод); if (d==1) { // } else if(d==0) { // }
Ответ №1:
Попробуйте заменить «return» на «select».
if EXISTS (select * from Users where @oNo=sNo and @pw=password)
begin
select 1
end
else
begin
select 0
end
Комментарии:
1. Только что пробовал. Странно, что таким образом она возвращает только «0». Хотя я пробовал как истинные, так и неправильные совпадения параметров для sp..