2014-12-01 4 views
1

원하는만큼 많은 매개 변수를 추가하기 위해 서브를 만들려고합니다. 저는 이것을 vb6에서했지만 여기서는 vb.net에서 매개 변수 이름 (.add (@ 매개 변수, 값)). 내가 매개 변수 이름을 알고하지 않고 할 수있는 방법을 찾을 필요가, 내가 저장 프로 시저에서 매개 변수의 순서를 사용하여 매개 변수를 보내려면 여기에 코드를 사용 : SQLClient 관리 AFAIK이름없이 sql 매개 변수를 추가합니다.

Public Sub EjecutarSP(ByVal SP As String, ByVal ParamArray Parametros() As Object) 
    Dim cnn As New SqlConnection(ConfigurationSettings.AppSettings("connString").ToString) 
    Dim cmd As New SqlCommand(SP, cnn) 
    Dim i As Integer 
    Dim Param As SqlParameter 
    Try 
     For i = 0 To UBound(Parametros) 
      Param = New SqlParameter("str", Parametros(i)) 
      cmd.Parameters.Add(Param) 
     Next 
     cmd.CommandTimeout = 0 
     cmd.CommandType = CommandType.StoredProcedure 
     If cmd.Connection.State <> ConnectionState.Open Then cmd.Connection.Open() 
     cmd.ExecuteNonQuery() 
     cmd = Nothing 
    Catch ex As Exception 
     Err.Raise(1000, "EjecutarSP", ex.Message) 
    End Try 
End Sub 

감사

답변

0

케이 'T는 이름없는 매개 변수

를 지원

From here:

무명라고도 순서, 매개 변수는 SQL Server에 대한 .NET Framework 데이터 공급자에 의해 지원되지 않습니다 .

그러나 매개 변수를 명시 적으로 생성하는 대신 연결된 후에는 DeriveParameters으로 Proc 매개 변수를 가져올 수 있습니다.

맹목적으로 매개 변수의 순서를 신뢰하여 Proc의 매개 변수와 일치 시키려한다고 가정하면 parameters at the given index.Value 만 설정하면됩니다.

Dim cmd As New SqlCommand(SP, cnn) 
... 
SqlCommandBuilder.DeriveParameters(cmd) 
For i = 0 To UBound(Parametros) 
    cmd.Parameters(i).Value = Parametros(i) 
Next 
0

그냥 다음과 같이 매개 변수가 추가되면 아무것도 (널)에 뭔가를 이름을 재설정 :

For i = 0 To UBound(Parametros) 
     Param = New SqlParameter("str", Parametros(i)) 
     cmd.Parameters.Add(Param) 
     Param.ParameterName = Nothing 
    Next