2013-05-27 31 views
0

我的問題是如何執行特定的存儲過程。當我執行特定事件時,它給我一個錯誤:在四個事件中執行SQL Server 2008中的存儲過程

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

我該如何提供它?我的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

您沒有參數的默認值,因此您必須全部指定它們。

這應該使用附加到SQLCommand的SQLParameters集合完成。這將生成一個「namef參數」調用,它在發送給SQL Server的文件中列出它們。

在你的情況下,你缺少參數,因爲你使用字符串連接和/或沒有默認值。有關轉換誤差在@emp_id

的地方來自於,比如說,@emp_name不管怎麼說,這是很難確切地知道,因爲我們不知道你是怎麼把這個代碼

相關問題