2011-01-19 6 views
1

私はテーブルを更新するストアドプロシージャを持っています。すべてのフィールドが必要なわけではなく、空白にすることもできます。ストアドプロシージャのパラメータ - 時にはNULL

例えば、タイトルが必要とされていないが、それが空白だとき、私はエラーを取得

  Dim ptitle As New SqlParameter("@title", SqlDbType.NVarChar, 20) 
    ptitle.Value = objFormat.CheckSQL(title) 
    myCommand.Parameters.Add(ptitle) 
  • EX {「プロシージャまたは関数 『sp_UpdateUser』は供給されなかったパラメータ 『@title』を、期待しています。 "} System.Exception

データフィールドが空白の場合はnullを許可するように修正できますか?このように、ストアドプロシージャの定義で

答えて

4

ストアドプロシージャでのデフォルト値をNULLと指定すると、問題が解決するはずです。

@title NVARCHAR(20) = NULL 
+0

素晴らしい!ありがとうございました! –

0

、あなたはパラメータ、例えば

@titleのデータ型はnvarchar(20)= NULLのデフォルト値を書き込むことができ、 ... ...

パラメータは省略可能で、sp callを指定しないと失敗しません。

少なくとも、このアプローチはSQL 2008ストアドプロシージャで使用します。

0

入力フィールドを何かに変換します。ヌル文字列を ""に、ヌル整数を0に設定します(可能な場合)

0

変数をストアドプロシージャ内でNULL値に明示的に設定できます。

1

まず最初に行うには、次のようなsp_UpdateUserで@Titleの値を初期化することである。第二に

alter procedure sp_UpdateUser 
@Title varchar(50) = null, 

...additional sql code here 

、それはあなたがobjFormat.CheckSQL(title)を通じてptitleに提供どのような値に依存します。

@title NVARCHAR(20) = NULL 

またはあなたにこのようなものを使用する:あなたは、あなたのストアド・プロシージャ内でこれを行うことができます

If @Title = '' set @Title = null 
0

:それは空の文字列を提供する場合、あなたはあなたのストアドプロシージャで追加の文が必要となりますvb.netコード

Sub InsertValues (Optional Title as String = "",...) 
関連する問題