CreateSP

Mit dieser Methode wird eine Instanz des Bausteins FB_SQLStoredProcedure mit der bereits geöffneten Datenbankverbindung des Bausteins FB_SQLDatabase initialisiert. Der Baustein FB_SQLStoredProcedure verwendet nur die Datenbankverbindung, die ihm über die CreateCmd‑Methode zugewiesen wurde. Mehrere Instanzen vom Baustein FB_SQLStoredProcedure können mit derselben Datenbankverbindung initialisiert werden.

Die Initialisierung des Bausteins FB_SQLStoredProcedure kann einige Zyklen in Anspruch nehmen. Das Busy-Flag des Bausteins oder der Methodenrückgabewert der CreateCmd-Methode muss überprüft werden bevor der Baustein einsatzbereit ist.

Syntax

METHOD CreateSP : BOOL
VAR_INPUT
    sProcedureName: T_MaxString;
    pParameterInfo: POINTER TO ARRAY [0..MAX_SPPARAMETER] OF ST_SQLSPParameter;
    cbParameterInfo: UDINT;
    pSQLProcedure: POINTER TO FB_SQLStoredProcedure;
END_VAR

CreateSP 1: Eingänge

Name

Typ

Beschreibung

sProcedureName

T_MaxString

Gibt den Namen der Prozedur an, welche ausgeführt werden soll.

pParameterInfo

POINTER TO ARRAY [0..MAX_SPPARAMETER] OF ST_SQLSPParameter

Pointer-Adresse zu der Parameter-Infoliste.

cbParameterInfo

UDINT

Gibt die Länge der Parameter-Infoliste an.

pSQLProcedure

POINTER TO FB_SQLStoredProcedure

Liefert eine neue Instanz des Bausteins FB_SQLStoredProcedure zurück.

CreateSP 2: Rückgabewert

Name

Typ

Beschreibung

CreateSP

BOOL

Zeigt den Status der Methode. Liefert TRUE, sobald die Methodenausführung beendet ist, also auch im Fehlerfall.

Beispiel

VAR
    fbSqlDatabase   : FB_SQLDatabaseEvt(sNetID := '', tTimeout := T#5S);
    ParaInfo        : ST_SQLSPParameter; 
END_VAR
ParaInfo.sParameterName     := '@Customer_ID';
ParaInfo.eParameterType     := E_SPParameterType.Input;
ParaInfo.eParameterDataType := E_ColumnType.BigInt;
ParaInfo.nParameterSize     := 8;

IF fbSQLDatabase.CreateSP('dbo.SP_GetCustomerPositions', ADR(ParaInfo), SIZEOF(ParaInfo), ADR(fbSQLStoredProcedure)) THEN
    IF fbSQLDatabase.bError THEN
        nState:=255;
    ELSE
        nState:= nState+1;
    END_IF
END_IF

Darauffolgend kann der FB_SQLStoredProcedureEvt verwendet werden, um die gespeicherte Prozedur auszuführen.