Eldrik: per asp gespeicherte prozedur auf SQL Server aufrufen!!

Hi,

zu meinem Problem wie kann ich per asp eine gespeicherte Prozedur auf einem SQL- Server aufrufen, und dieser durch ein Formular eingegebene Daten zukommen lassen? Die diese für die Verarbeitung benötigt?

Hätte da jemand evtl. Code für mich wie ich das am Besten bewerkstelligen könnte?

Greetz
Eldrik

  1. Hi,

    zu meinem Problem wie kann ich per asp eine gespeicherte Prozedur auf einem SQL- Server aufrufen, und dieser durch ein Formular eingegebene Daten zukommen lassen? Die diese für die Verarbeitung benötigt?

    Hätte da jemand evtl. Code für mich wie ich das am Besten bewerkstelligen könnte?

    Greetz
    Eldrik

    Hi,

    URL 1:   http://www.aspheute.com/artikel/20020903.htm
    'wie man Stored Procedures einfach(er) erstellt

    URL 2:   http://www.aspheute.com/artikel/20001013.htm
    'verschiedene Anwendungsmöglichkeiten und Tips für bessere Performance

    Gruß, Frank

  2. Hi Eldrik,

    zu meinem Problem wie kann ich per asp eine gespeicherte Prozedur auf einem SQL- Server aufrufen, und dieser durch ein Formular eingegebene Daten zukommen lassen? Die diese für die Verarbeitung benötigt?

    mit den drei Funktionen geht's:

    <%
    function AdoCreateConnection( strDBConnect )

    Dim adoConn
      set adoConn = Server.CreateObject( "ADODB.Connection" )

    with adoConn
        .ConnectionString = strDBConnect
        .CursorLocation = 3 ' ADODB.adUseClient
        .Open
      end with

    set AdoCreateConnection = adoConn

    end function

    function AdoCreateCommandSP( strDBConnect, strStoredProcName )

    Dim adoCmd
      Set adoCmd = Server.CreateObject( "ADODB.Command" )

    With adoCmd
        Set .ActiveConnection = AdoCreateConnection( strDBConnect )
        .CommandType = 4 ' ADODB.adCmdStoredProc
        .CommandText = strStoredProcName
        .NamedParameters = true
      End With

    Set AdoCreateCommandSP = adoCmd

    end function

    function AdoExecCommandRS( adoCmd )

    Dim rs

    Set rs = adoCmd.Execute()
      Set rs.ActiveConnection = Nothing

    Set AdoExecCommandRS = rs

    End Function
    %>

    Beispielaufruf:

    Dim adoCmd
      set adoCmd = AdoCreateCommandSP( strDBConnect, strStoredProcedure )
      with adoCmd
        .Parameters.Refresh
        .Parameters( "@LangID" ).Value    = nLanguageID
      end with

    Dim rs
      set rs = AdoExecCommandRS( adoCmd )

    set adoCmd = Nothing

    Gruß,
    Martin

    1. Danke ersteinmal Martin u. Frank für die Antworten, nur kann ich mir wenig darunter vorstellen,

      vielleicht hilft es euch wenn ich ein wenig beschreibe was ich vorhabe.

      Ich möchte das ein in der DB vorgegebenes Feld = CountID das bis jetzt den Wert 0 besitzt, bei einem Login eines Users um einen hochgezählt wird.
      Also einen Counter! dieser Wert soll auch nur in der DB stehen.
      Und nirgends anders ausgegeben werden.

      Um den richtigen Wert hinter einem Benutzer um einen zu erhöhen möchte ich noch den vorher eingegebenen Benutzernamen an die Prozedur übergeben, damit diese Anhand dieses Wertes den Eintrag um einen hochzählen kann.
      Die Variable vom Formular für den User ist: Eing_User.

      Zum besseren Verständnis Poste ich mal eben die Prozedur:

      CREATE PROCEDURE dbo.AddInfo @InputUserName varchar (12)  AS
      update login set CountID = CountID + 1 where usr = @InputUsername

      @InputUsername soll der Übergebene Wert des Benutzernames sein.

      Könnte mir evtl. jemand anhand meiner Beschreibung einen Code basteln??

      Greetz
      Eldrik

      1. Hallo Eldrik,

        Könnte mir evtl. jemand anhand meiner Beschreibung einen Code basteln??

        tut mir leid, das hier ist das SELF-Forum. Das heißt, du musst es selbst machen anhand der Beschreibung von Frank und mir. Dabei kannst du auch was lernen, und bist für das nächste Mal gewappnet :-)

        Gruß,
        Martin

      2. vielleicht hilft es euch wenn ich ein wenig beschreibe was ich vorhabe.
        Ich möchte das ein in der DB vorgegebenes Feld = CountID das bis jetzt den Wert 0 besitzt, bei einem Login eines Users um einen hochgezählt wird.
        Also einen Counter! dieser Wert soll auch nur in der DB stehen.
        Und nirgends anders ausgegeben werden.
        Um den richtigen Wert hinter einem Benutzer um einen zu erhöhen möchte ich noch den vorher eingegebenen Benutzernamen an die Prozedur übergeben, damit diese Anhand dieses Wertes den Eintrag um einen hochzählen kann.
        Die Variable vom Formular für den User ist: Eing_User.
        Zum besseren Verständnis Poste ich mal eben die Prozedur:
        CREATE PROCEDURE dbo.AddInfo @InputUserName varchar (12)  AS
        update login set CountID = CountID + 1 where usr = @InputUsername
        @InputUsername soll der Übergebene Wert des Benutzernames sein.
        Könnte mir evtl. jemand anhand meiner Beschreibung einen Code basteln??

        Hi Eldrik,

        ganz so einfach geht das leider nicht.

        Mit meinen Links/URLs auf Artikel in www.aspheute.com habe ich dir doch die Grundlagen zur Verfügung gestellt, den Code in diesen Artikeln auf deine Anforderungen umzuschreiben.

        In den Artikeln steht etwas über das "Command" Objekt von ADO, welches benötigt wird um Stored Procedures anzufassen, außerdem kann man herauslesen, wie man die entsprechenden Parameter der SP mit Werten füllt.

        Gruß, Frank