Knowledge Base Nr: 00122 clob_plsql.txt - http://www.swe-kaiser.de

Downloads:

SQL: Oracle: Textfile aus Datenbank lesen (CLOB) und mit Suchen&Ersetzen modifizieren und
als Textfile unter anderem Namen speichern.

  

PROCEDURE PRINT_ETIKETT (pWebNr VARCHAR2)
IS
vData VARCHAR2(32767) := ''; --mehr geht nicht auf einmal! :-(
vNewData VARCHAR2(32767) := ''; --mehr geht nicht auf einmal! :-(
vArt NUMBER := 1;

vSearch VARCHAR2(1000) := '';
vReplace VARCHAR2(1000) := '';

outfile TEXT_IO.FILE_TYPE;

v_err_num NUMBER;
v_err_msg VARCHAR2(100);

vLoc CLOB := null;
vAmount INTEGER := 5000;
vCount INTEGER := 0;
vOffset Integer := 1;
BEGIN
--template aus datenbank lesen
vFileData := 'schau mer mol :-)';

select count(*)
into vCount
from rohstoff.etikett
where art = vArt;
-- todo: vCount muss 1 sein!
if vCount <> 1 then
vFileData := 'nix wars :-( - Es darf nur 1 Etikett für art='||vart||' existieren - nicht '||vCount;
return;
end if;

select template
into vLoc
from rohstoff.etikett
where art = vArt;

DBMS_LOB.READ(vLoc, vAmount, vOffset, vData);
--message('template:' || vData || '#######ende template'); message('template:' || vData || '#######ende template');

--suchen und ersetzen
vSearch := 'DB_SYSDATE'; vReplace := TO_CHAR(SYSDATE,'DD.MM.YYYY');
select replace(vData, vSearch, vReplace) into vNewData from dual;
vSearch := 'DB_WEBNR'; vReplace := pWebNr;
select replace(vData, vSearch, vReplace) into vNewData from dual;
--message('result1:' || vNewData || '#######ende template'); message('result1:' || vNewData || '#######ende vNewData');

--in datei schreiben
outfile := TEXT_IO.FOPEN('ETIWAE.DAT', 'w');
TEXT_IO.PUT(outfile,vNewData); --CR
TEXT_IO.FCLOSE(outfile);
--message('result2:' || vNewData || '#######ende template'); message('result2:' || vNewData || '#######ende vNewData');

exception when others then
v_err_num := SQLCODE;
v_err_msg := SUBSTR(SQLERRM,1,100);
message('shit happens :-| : '||v_err_num||' - '||v_err_msg);
message('shit happens :-| : '||v_err_num||' - '||v_err_msg);
END PRINT_ETIKETT;