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

1 つのパラメータにはデフォルトがないため、すべてを指定する必要があります。

これは、SQLCommand にアタッチされた SQLParameters コレクションで行う必要があります。これにより、「namef パラメーター」呼び出しが生成され、SQL Server に送信されるコマンドでそれらが一覧表示されます。

あなたの場合、文字列連結を使用しているか、デフォルトがないため、パラメーターがありません。変換に関するエラーは、たとえば@emp_name@emp_id

とにかく、このコードをどのように呼んでいるかがわからないため、正確に知ることは困難です

于 2013-05-27T13:27:57.893 に答える