当前位置: 首页 > 知识库问答 >
问题:

过程或函数需要未提供的参数

齐雅畅
2023-03-14

过程或函数“login”需要参数“@Abc”,但未提供该参数

4个小时的搜索和尝试,没有用我已经提供了这个参数(复制/粘贴),给程序的参数数量是相同的程序和顺序。

@Abc是一个输出参数。

存储过程定义:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[login]
(
    @Abc int output,
    @firstname varchar(255) output,
    @lastname varchar(255) output,
    @Email varchar(255),
    @pass varchar(255)
)
As 
begin 
if not exists (select Email from user_1 where  email=@email)
 select @Abc = 0
 else begin
if not exists (
    select Email from user_1 where email =@Email and password = @pass
    )
    select @Abc = 1
else
select @Abc = 2,@firstname = u.first_name ,@lastname=u.last_name from user_1 u where u.email =   @email 
end
end 

调用存储过程的代码

 myCon.Open();

 TextBox username = UserName;
 TextBox password = Password;

 SqlCommand myCommand = new SqlCommand("login", myCon);

 SqlParameter count= myCommand.Parameters.Add("@Abc", SqlDbType.Int);
 count.Direction = ParameterDirection.Output;

 SqlParameter fnp = myCommand.Parameters.Add("@firstname", SqlDbType.VarChar,255);
 fnp.Direction = ParameterDirection.Output;

 SqlParameter lnp = myCommand.Parameters.Add("@lastname", SqlDbType.VarChar, 255);
 lnp.Direction = ParameterDirection.Output;

 myCommand.Parameters.AddWithValue("@Email",username.Text);
 myCommand.Parameters.AddWithValue("@pass", password.Text);

 myCommand.ExecuteNonQuery();
 myCon.Close();

共有1个答案

茅鸿宝
2023-03-14

你忽略了:

myCommand.CommandType = CommandType.StoredProcedure;

因此,发送到DB的命令是错误的sp_executeSQL调用,而不是所需的exec登录

仅供参考还有一个较短的语法:

myCommand.Parameters.Add("@Abc", SqlDbType.Int).Direction = ParameterDirection.Output;
 类似资料:
  • 问题内容: 我正在尝试通过调用存储过程将数据插入SQL Server数据库中,但出现错误 过程或函数“插入”期望参数“ @Emp_no”,但未提供 我的存储过程称为。我已经对其进行了彻底检查,并且没有丢失任何参数,也已经通过使用标签对其进行了检查。标签显示该值,但我不知道为什么会收到错误消息。 我的代码是 并且存储过程是 请帮我。提前致谢。 问题答案: 您需要使用: 或其他数据类型: 替换使用字符

  • 我对C#相当陌生,我正在尝试设置对数据库中一个存储过程的调用,该过程只接受一个参数。 我得到错误“过程或函数'SP_getName'需要参数'@username',但未提供该参数。” 当我向存储过程提供参数并通过SQL management studio运行它时,它工作正常。 然而,当我尝试调用它时,错误在于我如何传递参数,但我无法发现问题是什么。 如果您能帮我发现错误,我们将不胜感激! 我也试过

  • 问题内容: 我是在asp.net上的新手,后面有vb.code 我正在尝试从sql获取价值 我的密码 错误是 我已经尝试执行商店程序 并返回0非空值。 提前致谢! 问题答案: 尝试通过互换两条线。 如果是受支持的过程,还有一件事情,您应该在

  • 过程和函数是模式对象,包含一组保存在服务器上的 SQL 语句。在主窗口中,点击 “函数”来打开函数的对象列表。 函数向导 在对象工具栏点击 “新建函数”。“函数向导”会弹出,让你简易地创建过程或函数。 指定常式的“名” 并选择常式的类型:“过程”或“函数”。 定义参数。在相应的列中设置“名”、“类型模式”、“类型”、“默认值”、“输出”或/和“只读”。 如果你是创建一个函数,从列表中选择“函数类型

  • 过程或函数是模式对象,包含一组保存在服务器上的 SQL 语句。PostgreSQL 11 或以上支持过程。在主窗口中,点击 “函数”来打开函数的对象列表。 函数向导 在对象工具栏点击 “新建函数”。“函数向导”会弹出,让你简易地创建函数。 选择例程的类型:“过程”或“函数”。 定义参数。在相应的列中设置“模式”、“类型模式”、“类型”、“名”和“默认值”。 如果你是创建一个函数,从列表中选择“模式

  • 过程和函数是模式对象,包含一组保存在服务器上的 SQL 语句。在主窗口中,点击 “函数”来打开函数的对象列表。 函数向导 在对象工具栏点击 “新建函数”。“函数向导”会弹出,让你简易地创建过程或函数。 指定例程的“名” 并选择例程的类型:“过程”或“函数”。 定义参数。在相应的列中设置“名”、“类型”、“模式”和“默认值”。 如果你是创建一个函数,从列表中选择“返回类型”。 【提示】一旦取消勾选“