Seite 1 von 1
variablen übergabe an sql
Verfasst: Montag 19. November 2007, 09:52
von mephisto23
hi leute
der anfänger hat mal wieder ne frage:
wie schaffe ich es eine varialbe an einen sql statement zu übergeben.
Code: Alles auswählen
import cx_Oracle
con = cx_Oracle.connect("***/****@******")
cur= con.cursor()
CHA_IN_VAR = "hallo"
sql = 'DECLARE CHA_IN_VAR VARCHAR2(200); BEGIN CHA_IN_VAR := NULL; TIRIS.P_PYTHON ( CHA_IN_VAR ); COMMIT; END;'
cur.execute(sql)
con.commit()
das sql statement ruft eine oracle funktion auf... soweit funktioniert es. nur die variabel wird nicht übernommen
danke für eure hilfe
Re: variablen übergabe an sql
Verfasst: Montag 19. November 2007, 11:09
von gerold
mephisto23 hat geschrieben:wie schaffe ich es eine varialbe an einen sql statement zu übergeben.
Hallo mephisto23!
Das könnte dir helfen: [wiki]Parametrisierte SQL-Queries[/wiki]
Welcher paramstyle von cx_Oracle verwendet wird, musst du selber herausfinden.
mfg
Gerold

Verfasst: Montag 19. November 2007, 11:40
von mephisto23
sorry für die blöde frage aber wie soll das gehn?
CHA_IN_VAR is ja eigentlich eine variable die ins oracel gecastet wird.
Verfasst: Montag 19. November 2007, 12:37
von gerold
mephisto23 hat geschrieben:sorry für die blöde frage aber wie soll das gehn?
CHA_IN_VAR is ja eigentlich eine variable die ins oracel gecastet wird.
SQL-Anweisungen sind nur Text. Also musst du den Text anpassen. Und ``TIRIS.P_PYTHON`` kenne ich nicht.
Code: Alles auswählen
CHA_IN_VAR = "hallo"
sql = """
DECLARE
CHA_IN_VAR VARCHAR2(200);
BEGIN
CHA_IN_VAR := ?;
....;
END;
"""
cur.execute(sql, (CHA_IN_VAR, ))
Dieser code setzt allerdings voraus, dass cx_Oracle das Fragezeichen (?) als Platzhalter verwendet.
Ich weiß jetzt nicht wirklich, wo da im SQL die Strichpunkte hin gehören.
Ob ein ``COMMIT`` in der SQL-Anweisung gut ist? Das sollte ja von ``conn.commit()`` erledigt werden.
Es kann natürlich sein, dass cx_Oracle das ganze etwas anders handhabt. Aber was kann ich dir wirklich nicht sagen. Ich habe damit nie etwas gemacht.
mfg
Gerold

Verfasst: Montag 19. November 2007, 12:52
von BlackJack
@gerold: Das sieht nach einee Funktionsdefinition in der Datenbank aus, und *in* einer Funtkion, die die DB ändert ein COMMIT abzusetzen kann schon Sinn machen.