Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere .NET-Datenprovider

 

Gespeicherte Prozeduren verwenden

Sie können mit dem .NET-Datenprovider gespeicherte Prozeduren verwenden. Die ExecuteReader-Methode wird benutzt, um gespeicherte Prozeduren aufzurufen, die eine Ergebnismenge zurückgeben, während die ExecuteNonQuery-Methode benutzt wird, um gespeicherte Prozeduren aufzurufen, die keine Ergebnismenge zurückgeben. Die ExecuteScalar-Methode wird benutzt, um gespeicherte Prozeduren aufzurufen, die nur einen einzelnen Wert zurückgeben.

Wenn Sie eine gespeicherte Prozedur aufrufen, müssen Sie ein SAParameter-Objekt erstellen. Verwenden Sie ein Fragezeichen als Platzhalter für Parameter:

sp_producttype( ?, ? )

Weitere Hinweise zum Parameter-Objekt finden Sie im Abschnitt SAParameter-Klasse.

♦  So führen Sie eine gespeicherte Prozedur aus
  1. Deklarieren und initialisieren Sie ein SAConnection-Objekt.

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. Öffnen Sie die Verbindung.

    conn.Open();
  3. Fügen Sie ein SACommand-Objekt hinzu, um eine SQL-Anweisung zu definieren und auszuführen. Der nachstehende Beispielcode benutzt die CommandType-Eigenschaft, um die Anweisung als gespeicherte Prozedur zu identifizieren.

    SACommand cmd = new SACommand( "ShowProductInfo",
        conn );
    cmd.CommandType = CommandType.StoredProcedure;

    Wenn Sie die CommandType-Eigenschaft nicht angeben, müssen Sie ein Fragezeichen als Platzhalter für Parameter verwenden:

    SACommand cmd = new SACommand(
        "call ShowProductInfo(?)", conn );
    cmd.CommandType = CommandType.Text;
  4. Fügen Sie ein SAParameter-Objekt hinzu, um die Parameter für die gespeicherte Prozedur zu definieren. Sie müssen ein neues SAParameter-Objekt für jeden Parameter erstellen, der von der gespeicherten Prozedur benötigt wird.

    SAParameter param = cmd.CreateParameter();
    param.SADbType = SADbType.Int32;
    param.Direction = ParameterDirection.Input;
    param.Value = 301;
    cmd.Parameters.Add( param );

    Weitere Hinweise zum Parameter-Objekt finden Sie im Abschnitt SAParameter-Klasse.

  5. Rufen Sie die ExecuteReader-Methode auf, um das DataReader-Objekt zurückzugeben. Die Get-Methoden werden benutzt, um die Ergebnisse im angegebenen Datentyp zurückzugeben.

    SADataReader reader = cmd.ExecuteReader();
    reader.Read();
    int ID = reader.GetInt32(0);
    string name = reader.GetString(1);
    string descrip = reader.GetString(2);
    decimal price = reader.GetDecimal(6); 
  6. Schließen Sie das SADataReader- und das SAConnection-Objekt.

    reader.Close();
    conn.Close();
Alternative für den Aufruf einer gespeicherten Prozedur

Schritt 3 in den oben beschriebenen Anleitungen gibt zwei Arten an, wie Sie eine gespeicherte Prozedur aufrufen können. Eine andere Methode zum Aufruf einer gespeicherten Prozedur, ohne ein Parameter-Objekt zu verwenden, besteht darin, die gespeicherte Prozedur wie folgt aus dem Quellcode aufzurufen:

SACommand cmd = new SACommand(
    "call ShowProductInfo( 301 )", conn );

Hinweise zum Aufruf von gespeicherten Prozeduren, die eine Ergebnismenge oder einen Einzelwert zurückgeben, finden Sie im Abschnitt Daten mit dem SACommand-Objekt abrufen.

Hinweise zum Aufruf von gespeicherten Prozeduren, die keine Ergebnismenge zurückgeben, finden Sie im Abschnitt Zeilen mit dem SACommand-Objekt einfügen, aktualisieren und löschen.