true/false に対して 1 または 0 を返す sproc にいくつかのロジックを記述しました。手動で実行するとうまくいきますが、VB から呼び出すと、sproc が返す実際の値に関係なく、常に 0/false になります。おそらく何かばかげたことを見逃していますが、私はそれを見ていません。このコードは、適切に動作するシステム内の他のコードから部分的にコピーされていますが、動的に構築された sproc 呼び出しを使用しています。パラメータ化された sproc 呼び出しを使用するようにそのコードを変更しようとしています。
sproc は、"Allowed" という名前の列に値を返します。
VB コード (変数名/コンテンツ用にコピーおよびサニタイズ) は次のようになります。
Public Function sample(ByVal parm1 As String, ByVal parm2 As String) As Boolean
Dim Allowed As Boolean = False
Try
Dim MyConnection As New SqlConnection(ConnString)
Dim MyDataAdapter As New SqlDataAdapter("sproc", MyConnection)
Dim DS As New DataSet
MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@parm1", SqlDbType.Char, 14))
MyDataAdapter.SelectCommand.Parameters("@parm1").Value = parm1
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@parm2", SqlDbType.Char, 30))
MyDataAdapter.SelectCommand.Parameters("@parm2").Value = parm2.ToUpper()
MyDataAdapter.Fill(DS)
If DS.Tables.Count > 0 Then
If DS.Tables(0).Rows.Count > 0 Then
Allowed = Convert.ToBoolean(DS.Tables(0).Rows(0).Item("Allowed"))
End If
End If
Catch ex As Exception
' Real code has error handling here that's not getting hit
End Try
Return Allowed
End Function