1
私はSSMSで実行すると完全にデータを返すSQL Server 2008にストアドプロシージャがあります。 VBスクリプトコードからストアドプロシージャを呼び出すと、データは返されません。コードはSQLと同じデータを返しません
ストアドプロシージャのコード:
ALTER Procedure [dbo].[getstuff]
(@CompID int = NULL,
@FranID int = NULL,
@Type nvarchar (50) = NULL)
SELECT *
FROM Table1
WHERE CompID = @CompID
AND (FranID = @FranID OR @FranID IS NULL)
AND (PType = @Type OR @Type IS NULL)
私は次のようにSSMSに手動でストアドプロシージャを実行します -
DECLARE @return_value int
EXEC @return_value = [dbo].[getstuff]
@CompID = 1,
@FranID = 22,
@Type = NULL
私はVBScriptのように実行すると、私は
を期待してい正確なデータを取得しますso -
strSql = "getstuff"
DBConn.AddParameter "@CompID", 1
DBConn.AddParameter "@FranID", 22
DBConn.AddParameter "@Type", NULL
Set TestRS = DBConn.GetRecordset(adCmdStoredProc, strSQL)
データが戻ってきません。しかし、@Typeパラメータを使わないでこのように動作させると、@ Typeパラメータ -
strSql = "getstuff"
DBConn.AddParameter "@CompID", 1
DBConn.AddParameter "@FranID", 22
Set TestRS = DBConn.GetRecordset(adCmdStoredProc, strSQL)
データが返されます。 @ FranIDと@TypeにNULLまたは実際のデータを渡すことができる必要があります。これは、私を狂ってしまう助けになるでしょう。
本当にあなたの質問への答えではありませんが、ストアドプロシージャに既定値が指定されているので、NULLのパラメータを追加するのはなぜですか?追加しない場合、この問題は回避されます。 –
'NULL'の代わりに' DBNull.Value'(またはVB6の同等物)を使ってみてください。 – yelxe
@MartinParkinがすでに提案しているように、パラメータを設定しない方が良い方法です。私はストアドプロシージャにデフォルトが設定されているとき、このメソッドを常に使用します。 – Lankymart