【问题标题】:Sql Server Stored procedure returns -1Sql Server 存储过程返回 -1
【发布时间】:2014-07-01 22:18:47
【问题描述】:

我正在实体框架6.0上写代码,asp.net上的linq,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

你能帮我吗,我哪里做错了?

【问题讨论】:

  • ObjectParameter output = new ObjectParameter("val", typeof(int)); var d = context.checkUser(Convert.ToInt32(txtONo.Text), txtPw.Text, 输出); var d=context.checkUser(Convert.ToInt32(txtONo.Text),txtPw.Text); if (d==1) { // } else if(d==0) { // }
  • 你在使用函数导入吗?
  • 好吧,我将数据库映射到实体框架。所以我在sql端写的存储过程,在函数导入中与sql端同名存在;称为“检查用户”。
  • 抱歉代码是这样的: ObjectParameter output = new ObjectParameter("val", typeof(int)); var d = context.checkUser(Convert.ToInt32(txtONo.Text), txtPw.Text, 输出); if (d==1) { // } else if(d==0) { // }

标签: sql-server linq stored-procedures parameters output


【解决方案1】:

尝试将“return”替换为“select”。

if EXISTS (select * from Users where @oNo=sNo and @pw=password)
    begin
    select 1
    end
else
    begin
    select 0
    end

【讨论】:

  • 刚试过。这种方式很奇怪,它只返回“0”。尽管我为 sp.. 尝试了正确和错误的参数匹配。
猜你喜欢
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多