0

我的问题是如何执行特定的存储过程。当我执行特定事件时,它会给我一个错误:

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

我如何提供它?我的 SQL 是:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE StoredProcedureNames
@event tinyint,
@empid int,
@emp_name varchar(50),
@emp_phno char(10),
@emp_add nvarchar(75)

AS

IF @event  = 1
BEGIN
  INSERT INTO employee_test (emp_name,emp_phno,emp_add,empid )
  VALUES (@emp_name,@emp_phno,@emp_add,@empid) 
END

ELSE IF @event  = 2
BEGIN
  UPDATE employee_test SET 
    emp_name = @emp_name,
    emp_phno = @emp_phno,
    emp_add = @emp_add,
    empid = @empid 
  WHERE (emp_Add = @emp_add
         and emp_name = @emp_name
         and emp_phno = @emp_phno
         and empid = @empid )
END

ELSE IF @event = 3
BEGIN
  select empid,emp_phno  from employee_test
  where (emp_Add = @emp_add or emp_name = @emp_name ) -- when i execute any event say exex sp 3 it shows a error
END 

ELSE IF @event = 4
BEGIN
  DELETE FROM employee_test
  WHERE (emp_phno = @emp_phno or emp_name = @emp_name )
End

当我没有提供所有字段值时它显示的错误

将数据类型 varchar 转换为 int 时出错。

这是什么意思?

4

1 回答 1

0

您对其中一个的参数没有默认值,因此您必须全部指定它们。

这应该通过附加到 SQLCommand 的 SQLParameters 集合来完成。这将生成一个“namef 参数”调用,它在发送到 SQL Server 的命令中列出它们

在您的情况下,您缺少参数,因为您正在使用字符串连接和/或您没有默认值。关于转换的错误来自,比如说,@emp_name代替@emp_id

无论如何,很难确切知道,因为我们不知道您如何调用此代码

于 2013-05-27T13:27:57.893 回答