2013-05-27 11 views
0

Мой вопрос в том, как я могу выполнить определенную хранимую процедуру. Когда я выполняю конкретное событие, это дает мне ошибку:Выполнение хранимой процедуры в SQL Server 2008 с четырьмя событиями

Procedure or function 'StoredProcedureNames' expects parameter '@empid', which was not supplied

Как его поставить? My 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 

Ошибка это показывает, когда я м не поставить все значения полей

Error converting data type varchar to int.

что это значит?

+2

Как вы выполнение хранимой процедуры? Похоже, что вы не поставляете достаточно параметров, а тот, который вам не хватает, интерпретируется для другого. – Lojko

ответ

0

У вас нет параметров по умолчанию для одного, поэтому вы должны указать их все.

Это должно быть сделано с помощью сборников SQLParameters, прикрепленных к SQLCommand. Это приведет к вызову «namef parameter», где он перечисляет их в comamnd, отправленном на SQL Server.

В вашем случае вам не хватает параметра, поскольку вы используете конкатенацию строк и/или у вас нет значений по умолчанию. Ошибка о преобразовании происходит от, скажем, @emp_name в месте @emp_id

Во всяком случае, это трудно, чтобы точно знать, потому что мы не знаем, как вы называете этот код

Смежные вопросы