Hallo,
ich möchte eine Procedure schreiben, die über Nacht nur die Datensätze einer Tabelle holt, die eine bestimmte Baureihen-Anfangsbuchstaben haben.
Doch leider funktioniert folgendes nicht:
AND SUBSTR(BAUREIHE, 1, 1) IN ( varBAUREIHE)
Die Variable varBAUREIHE ist befüllt (‚B‘,‚E‘,‚L‘,‚R‘,‚S‘,‚W‘)
Dieser Inhalt wird vorher aus einer Config-Tabelle ermittelt in der eine Auflistung steht (A,B,C,D)
Doch sobald ich diese Var in den Statement einbauer in der IN-Clausel gehts nicht, als Wertübergabe siehe folgende Zeilen:
SELECT
DISTINCT
SUBSTR(BAUREIHE, 1, 1), varBAUREIHE
geht es schon.
Kann mir jemand sagen wie ich dies in der IN-Clausel rein bekomme?
Vielen Dank
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CREATE OR REPLACE PROCEDURE PROC_BAUREIHE_IMPORT
IS
varTMP NUMBER;
varTMP_BAUREIHE VARCHAR2(100);
varERRORCODE NUMBER;
varBAUREIHE VARCHAR2(100);
CURSOR baureihe_cursor is
–*******************************************************
select ‚‘’’|| Replace(REPLACE(baureihe_liste, ‚,‘, ‚‘’,’’’), ’ ‚, ‚‘)|| ‚‘‘’ BAUREIHE
from CONFIG_TAB;
–Folgende Form entsteht: ‚B‘,‚E‘,‚L‘,‚R‘,‚S‘,‚W‘
–*******************************************************
baureihe_val baureihe_cursor%ROWTYPE;
BEGIN
OPEN baureihe_cursor;
LOOP
BEGIN
varTMP := 1;
FETCH baureihe_cursor INTO baureihe_val;
EXIT WHEN baureihe_cursor%NOTFOUND;
varTMP_BAUREIHE := baureihe_val.BAUREIHE;
IF varTMP = 1
THEN
DBMS_OUTPUT.put_line(‚1. Mal‘);
– is ok
varTMP :=2;
varBAUREIHE := varTMP_BAUREIHE;
ELSE
varTMP :=3;
varBAUREIHE := ‚,‘|| varTMP_BAUREIHE;
END IF;
insert into ZULAESSIGE_BAUREIHEN (BAUREIHE, TEXT)
(
SELECT
DISTINCT
SUBSTR(BAUREIHE, 1, 1), varBAUREIHE
FROM IMPORT_TABELLE
WHERE
ID > 1000
AND BAUREIHE IS NOT NULL
–sobald ich die Variable ‚varBAUREIHE‘ durch ‚B‘,‚E‘,‚L‘,‚R‘,‚S‘,‚W‘ ersetze - gehts
AND SUBSTR(BAUREIHE, 1, 1) IN ( varBAUREIHE)
);
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -6502 THEN
varERRORCODE := SQLCODE;
DBMS_OUTPUT.PUT_LINE(varBAUREIHE);
ELSE
varERRORCODE := SQLCODE;
DBMS_OUTPUT.PUT_LINE(varERRORCODE);
END IF;
END;
END LOOP;
CLOSE baureihe_cursor;
END;