-2

この方法で検索クエリを書いてみます

alter procedure search  
   @Book_ID int,
   @Book_name varchar(50),
   @Category_type_ID int,
   @Number_of_copies int,
   @Author_ID int
as
    select * from Book_info
    where [Book_name] like '[textboxofsearch]%'

名前で本を検索する本情報レコードがあり、この最初にそのための手順を作成します...レコードはこのようなものです

  bookid book_name            Category_type_ID Number_of_copies Author_ID
  ----------------------------------------------------------------------
  55     Software Engineering      2               150             39
  56     mbr                       5               150             44
  57     Marketing Management      5                33             40

私はこのようにそれを確認すると:

search mbr

それは私にこのエラーを示しています:

メッセージ 8114、レベル 16、状態 5、プロシージャ検索、行 0
データ型 nvarchar を int に変換中にエラーが発生しました。

4

3 に答える 3

1

不完全なプロシージャ ステートメントを使用するだけで、proc のパラメータは次のようになります。

   @Book_ID int,
   @Book_name varchar(50),
   @Category_type_ID int,
   @Number_of_copies int,
   @Author_ID int

そして、procの実行が次の場合:

search mbr

次に、2つの問題があります。1 つは、すべてのパラメータが必要であり、1 つのパラメータ値のみを送信していることですmbr。2 つ目は、最初の項目mbrが無効であると認識していることです。mbr変数 (そうである必要がある場合)@mbrまたはリテラル文字列 "mbr" (そうである必要がある'mbr'場合) です。 . これによりよく答えるには、より多くの情報を提供する必要があります。

于 2013-11-08T19:28:01.920 に答える
0

渡された本の名前ですべての列を返す場合、ストアドプロシージャに他のすべてのパラメーターが必要な理由はわかりませんが、パラメーター @Book_Name が 1 つしかなく、proc がすべての本に関するすべての詳細を返します。 name は LIKE @Book_Name です。次のようなことができます

alter procedure search  
@Book_name varchar(50)
as
DECLARE @Sql NVARCHAR(MAX)

SET @Sql =    'select * from Book_info
              where [Book_name] like '''+ @Book_name +'%'''

Execute sp_executesql @Sql
于 2013-11-08T19:33:42.307 に答える
0

他のパラメータにはデフォルト値がないため、問題は呼び出し方です。

あなたが言う宣言では:@Book_ID int、最初のパラメータとして。ただし、2 番目のパラメーターにテキストを渡します。

つまり、次を使用します。

alter procedure search  
@Book_ID int = null,
@Book_name varchar(50) = null,
@Category_type_ID int = null,
@Number_of_copies int = null,
@Author_ID int = null
as

試した後:

search @Book_name = 'xxxxx'

またはパラメータの順序を変更します

alter procedure search  
@Book_name varchar(50) = null,   
@Book_ID int = null,  
@Category_type_ID int = null,
@Number_of_copies int = null,
@Author_ID int = null
as

そして試してください:

search 'xxxxx'
于 2013-11-08T19:34:22.313 に答える