1

3列のテーブルがあるとします

   ID       Int
   Name     nvarchar(63)
   Age      Int

キーワード入力ですべての行一致を検索する手順があります。

Create Procedure usp_Search

 @KeyWord nvarchar(63)
as
begin
    SEKECT * FROM TblPersonal
             WHERE 
                   @KeyWord IS NULL
                OR @KeyWord  = Age
                OR Name Like N'%'+@KeyWord+'%'  
end

SQL管理ツールでテストしたところ、正常に動作しました

DECLARE @return_value int

EXEC    @return_value = [dbo].[usp_Search]
        @KeyWord = NULL

しかし、ADO.netで実行してSqlParameterに渡すと、DBNull.Valueエラーが発生しました

「データ型 nvarchar を数値に変換中にエラーが発生しました」

SQl管理ツールのADO.netと環境の違いを誰でも教えてください

4

2 に答える 2

1

問題は次の行にあります。

OR @KeyWord  = Age

Ageは整数で、@KeyWord文字列です。エラーが発生しないようにするには、データ型ageを文字列に変換し、

OR @KeyWord  = CAST(Age AS NVARCHAR(5))
于 2013-05-15T06:24:43.570 に答える
-1

SQLサーバー管理を構成してみてください..ツールで-オプション-デザイナー-「変更の保存を防ぐ...」のチェックを外します

于 2013-05-15T06:26:51.053 に答える