Stringübergabe an PL/SQL Prozedure


hamburger83

Grünschnabel
Hallo zusammen,

ich möchte mit Perl eine PL/SQL Prozedure aufrufen mit einem String Parameter. Der String soll in der PL/SQL Prozedure für eine IN-Abfrage genutzt werden und hat folgendes Muster:

$uebergabestring = 'XXX','XXX','XXX';

Den Übergebe ich jetzt an meine Prozedure mittels:

my $sql_upd = "BEGIN
PROCEDURE($uebergabestring);
END;";

Problem sind nun die Kommatas im Uebergabestring. Er versteht nicht, dass der String zusammengehört, sondern er denkt, dass es drei Parameter sind, die natürlich nicht an meine PL/SQL Procedure übergeben werden können.
Probiert hatte ich schon die Variante (Uebergabestring von \" eingeschlossen):

my $sql_upd = "BEGIN
PROCEDURE(\"$uebergabestring\");
END;";

Dies sagt er mir jedoch "Bezeichner muss deklariert werden", obwohl der längst bekannt ist.

Hat jemand eine Idee für das Problem?

Vielen Dank und viele Grüße,

Hamburger
 

deepthroat

Erfahrenes Mitglied
Hi.

Zuersteinmal ist es grundsätzlich eine schlechte Idee Abfragen auf diese Art zusammenzuschustern. (Stichwort: SQL Injection, Wartbarkeit etc.)

Was verwendest du denn? Perl::DBI?

Du solltest Platzhalter verwenden:
Perl:
my $upd = "BEGIN PROCEDURE(?);
END;";

my $stmt = $db->prepare($upd);

$stmt->execute($uebergabestring);
Das entsprechende Quoting usw. übernimmt das Modul.

Gruß