Ich bin in Rails Activerecord arbeiten und Postgresql und bin versucht, eine SQL-Anweisung zu sanieren, die eine gespeicherte Prozedur ausführt:Sanitizing Aufruf einer gespeicherten Prozedur in SQL-Anweisung
query =<<-SQL
SELECT *
FROM #{stored_procedure_name}
(
#{param_1},
#{param_2}
)
SQL
Die obige Anweisung funktioniert, wenn sie ausgeführt . Soweit ich weiß, sollte die gespeicherte Prozedur aufgrund der Parametrisierung (aufgrund der Art und Weise, wie ich die Funktion definiert habe) auf der Datenbankebene bereinigt werden. Wie kann ich jedoch die query
oben sterilisieren? Ich habe versucht, sanitize
Methoden des Active ohne Erfolg durch so etwas wie
statement =<<-SQL
SELECT * FROM ? (?, ?)
SQL
und anschließend in die Parameter übergeben, aber das hat nicht funktioniert - und scheint dumm.
Leider löst dies einen Fehler aus 'SELECT * FROM' procedure_name'' weil der Funktionsname in einfache Anführungszeichen eingeschlossen ist – fibono
macht Sinn, lass mich sehen, ob ich einen Weg finden kann, das zu beheben. – fanta
Nein, Sie können das nicht beheben, der Prozedurname darf kein Parameter für die Abfrage sein. – Shadow