Um innerhalb einer "Stored Procedure" oder "Function" in Oracle Parameter in eine SQL Abfrage einzubauen, können Sie folgendes Beispiel als Vorlage nutzen:
CREATE OR REPLACE PROCEDURE SP_TESTS (in_condition IN VARCHAR2) IS ret_value number; Ssql varchar2(4000); BEGIN DBMS_OUTPUT.PUT_LINE('Start ...'); -- Prüfen, ob eine Bedingung übergeben wurde -- Fall nicht, where mit "1=1" ergänzen lassen if (in_condition is null OR LENGTH(in_condition) = 0) then condition := ' 1=1 '; else condition := in_condition; end if; -- SQL Query zusammensetzen Ssql := 'SELECT id FROM demo WHERE ' || condition || ' ORDER by 1'; -- SQL Query anzeigen DBMS_OUTPUT.PUT_LINE('SQL Query: ' || Ssql); -- Den zusammengebauten SQL Befehl ausführen lassen execute immediate Ssql into ret_value; -- Ergebnis anzeigen DBMS_OUTPUT.PUT_LINE('Ergebnis: ' || ret_value|| '%'); END;
Das Script erkennt nach dem Start automatisch, ob eine WHERE Bedingung als Parameter übergeben wurde. Fehlt diese, würde der fehlerhaft SQL so aussehen:
SELECT id FROM demo WHERE ORDER by 1
Dadurch würde ein Fehler ausgelöst werden. Durch die Ergänzung mit "1 = 1" wird der SQL Befehl wieder gültig und kann fehlerfrei ausgefürt werden:
SELECT id FROM demo WHERE 1 = 1 ORDER by 1