execute ist eine Methode der Klasse SapDB_Prepared.
Mit dieser Methode führen Sie eine SQL-Anweisung mit Parametern aus (z. B. eine Datenbankprozedur).
execute (sqlParms = [])
sqlParms |
Parameterliste mit den Eingabeparameter |
Ergebnis:
● bei erfolgreicher Ausführung: siehe Mögliche SQL-Ergebnisse
gegebenenfalls Ausgabeparameter
● bei einem Fehler: Ausnahme der Klasse SQLError
select = session.prepare ('SELECT * FROM
hotel.customer WHERE cno = ?')
select.execute ([3000])
<SapDB_ResultSet object at …>
Sie erzeugen die Datenbankprozedur avg_price:
session.sql ("""CREATE DBPROCEDURE avg_price (IN zip CHAR(5), OUT avg_price FIXED(6,2)) AS
VAR sum FIXED(10,2); price FIXED(6,2); hotels INTEGER;
TRY
SET sum = 0; SET hotels = 0;
DECLARE dbproccursor CURSOR FOR
SELECT price FROM hotel.room,hotel.hotel WHERE zip = :zip AND
room.hno = hotel.hno AND type = 'single';
WHILE $rc = 0 DO BEGIN
FETCH dbproccursor INTO :price;
SET sum = sum + price;
SET hotels = hotels + 1;
END;
CATCH
IF $rc <> 100 THEN STOP ($rc, 'unexpected error');
CLOSE dbproccursor;
IF hotels > 0 THEN SET avg_price = sum / hotels
ELSE STOP (100, 'no hotel found');""")
Sie erzeugen mit der Methode prepare ein Objekt der Klasse SapDB_Prepared:
call = session.prepare ('call hotel.avg_price (?, ?)')
Sie geben einen Wert für den Inputparameter an:
in1 = 20005 # sets zip
Sie rufen die Datenbankprozedur mit der Methode execute auf.
out1 = call.execute ([in1])
Sie zeigen den Wert des Ausgabeparameters an:
print 'value avg_price:', out1
value avg_price: (135,0)