Oracle: Stored Procedures mit dynamischen SQL Befehlen

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

Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

4 × 4 =