0

私はしばらくの間これに頭をぶつけてきました。

テーブルからフィールドを取得して入力を入力する関数がありますが、関数を実行しようとすると、「プロシージャまたは関数'Quad_GetAllFields'は指定されていないパラメータ'@subWeek'を予期しています」というエラーが表示されます。

関数のどのポイントからでもアクセスできるので、パラメーターを指定していることはわかっています。

関数は次のとおりです。

Protected Sub setAllFields(ByVal myConnection As SqlConnection, ByVal subWeek As String, ByVal site As String)
    Dim myCommand = New SqlCommand("Quad_GetAllFields", myConnection)
    myCommand.Parameters.AddWithValue("@subWeek", subWeek)
    myCommand.Parameters.AddWithValue("@site", site)
    Dim myDataReader As SqlDataReader = myCommand.ExecuteReader()
    If myDataReader.Read() Then
        'populate fields
    End If
End Sub

そして、ストアドプロシージャは次のとおりです。

ALTER PROCEDURE dbo.Quad_GetAllFields
(
@subWeek VARCHAR(50),
@site VARCHAR(20)   
)
AS
BEGIN
SELECT TOP (1) ID, Priority1, Priority2, Priority3, Priority4, Highlight1, Highlight2, Highlight3, Highlight4, Update1, Update2, Update3, Ahead1, Ahead2, Ahead3, Outlook1, Outlook2, Comments, Site, Week, Submitted FROM Charts WHERE Week = @subWeek AND Site = @site ORDER BY ID DESC
END

私が間違っていることについて何か助けはありますか?

ストアドプロシージャの操作はかなり新しいですが、それでも問題を見つけることができません。

ありがとうございました

4

2 に答える 2

1

SqlCommand's CommandTypeプロパティをに設定する必要がありStoredProcedureます。デフォルトはText:

Protected Sub setAllFields(ByVal myConnection As SqlConnection, ByVal subWeek As String, ByVal site As String)
    Dim myCommand = New SqlCommand("Quad_GetAllFields", myConnection)
    myCommand.CommandType = CommandType.StoredProcedure
    myCommand.Parameters.AddWithValue("@subWeek", subWeek)
    myCommand.Parameters.AddWithValue("@site", site)
    Dim myDataReader As SqlDataReader = myCommand.ExecuteReader()
    If myDataReader.Read() Then
        'populate fields'
    End If
End Sub
于 2013-03-04T23:01:26.940 に答える
0

文字列パラメータ@subWeekがnullの場合、このエラーが発生する可能性があります。

文字列がnullの場合、@subWeekにDBNull.Valueを渡す必要があります。

@subWeek値をハードコーディングしてみてください

myCommand.Parameters.AddWithValue("@subWeek", "Myvalue")

これは正常に機能するはずです。

于 2013-03-04T22:19:57.350 に答える