StoredProcedure MS SQL Server mit Parameter

  • Hallo,

    mit nachfolgendem Testscript lese ich Datensätze aus, die die StoredProcedure 'spSelectComboboxen' liefert.

    Wie müßte der Aufruf lauten, damit ich auch Parameter an die StoredProcedure übergeben kann?

    [autoit]

    $strConnexion = "DRIVER=SQL Server;SERVER=MeinServer;DATABASE=MeineDatenbank;LANGUAGE=Deutsch;Trusted_Connection=Yes;Regional=Yes"
    $strSqlQuery = "spSelectComboboxen"
    $oConn1 = ObjCreate("ADODB.Connection")
    $oRS1 = ObjCreate("ADODB.Recordset")
    $oConn1.open($strConnexion)
    $oRS1.open($strSqlQuery,$oConn1)
    $oRS1.MoveFirst
    Do
    ConsoleWrite($oRS1.Fields(0).Value & @CRLF)
    $oRS1.MoveNext
    Until $oRS1.EOF = True
    $oRS1.close
    $oConn1.close

    [/autoit]

    Vielen Dank und Grüsse, mausk

  • Hi Schumi,

    mein Script funktioniert nun, doch bei RecordCount erhalte ich IMMER -1 als Ergebnis,
    obwohl ich adOpenStatic als CursorType verwende...

    [autoit]

    AutoItSetOption("MustDeclareVars", 1)

    [/autoit][autoit][/autoit][autoit]

    ; ADO-Reference >>> http://www.w3schools.com/ado/
    Dim $objConnection, $objRecordSet, $objCommand, $objParameter
    Dim $strConnection = "DRIVER=SQL Server;SERVER=MeinServer :( ;DATABASE=MeineDB;LANGUAGE=Deutsch;Trusted_Connection=Yes;Regional=Yes"
    Dim $strStoredProcName = "spTest"
    Dim $adOpenStatic = 3 ; CursorType
    Dim $adCommandType = 4 ; StoredProcedure
    Dim $adParamInput = 1 ; InputParameter
    Dim $adSize = 0 ; DefaultValue, (LengthDataType 'VARCHAR(50)'
    Dim $adInteger = 3 ; INT
    Dim $adVarChar = 200 ; VARCHAR
    Dim $varParamValue ; InputValue

    [/autoit][autoit][/autoit][autoit]

    $objConnection = ObjCreate("ADODB.Connection")
    $objConnection.Open($strConnection)

    [/autoit][autoit][/autoit][autoit]

    $objCommand = ObjCreate("ADODB.Command")
    $objCommand.ActiveConnection = $objConnection
    $objCommand.CommandText = $strStoredProcName
    $objCommand.CommandType = $adCommandType

    [/autoit][autoit][/autoit][autoit]

    ; >>> Add InputParameters <<<
    ; 1.Parameter
    $varParamValue = 2
    $objCommand.Parameters.Append($objCommand.CreateParameter("@ID", $adInteger, $adParamInput, $adSize, $varParamValue))
    ; 2.Parameter
    $varParamValue = "Vorname2"
    $adSize = 50
    $objCommand.Parameters.Append($objCommand.CreateParameter("@Vorname", $adVarChar, $adParamInput, $adSize, $varParamValue))

    [/autoit][autoit][/autoit][autoit]

    $objRecordSet = ObjCreate("ADODB.Recordset")
    $objRecordSet.CursorType = $adOpenStatic
    $objRecordSet = $objCommand.Execute

    [/autoit][autoit][/autoit][autoit]

    MsgBox (64, "RecordCount", $objRecordSet.RecordCount)

    [/autoit][autoit][/autoit][autoit]

    If $objRecordSet.BOF = True Or $objRecordSet.EOF = True Then
    MsgBox(64,"Test", "No records found")
    Else
    Do
    ConsoleWrite($objRecordSet.Fields(0).Value & @CRLF)
    $objRecordSet.MoveNext
    Until $objRecordSet.EOF = True
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $objConnection.Close

    [/autoit]

    Vielleicht weißt Du Rat :)

    Grüsse, Mike