Problem:
In einer Long Raw-Spalte stehen SQL-Statements; diese möchten wir auslesen, um sie später z.B. in ASP oder PHP weiterzuverwenden.
Kennt einer eine Möglichkeit diese Long Raw-Spalte in eine lesbare Form zu konvertieren.
THX
Problem:
In einer Long Raw-Spalte stehen SQL-Statements; diese möchten wir auslesen, um sie später z.B. in ASP oder PHP weiterzuverwenden.
Kennt einer eine Möglichkeit diese Long Raw-Spalte in eine lesbare Form zu konvertieren.
THX
Kennt einer eine Möglichkeit diese Long Raw-Spalte in eine
lesbare Form zu konvertieren.
Sollte kein Problem sein so eine Spalte auszulesen und in einen String umzuwandeln.
Wie es aber genau geht hängt aber von verwendetem Datenbank-API und Programmiersprache ab.
Grüße, Robert
Wie es aber genau geht hängt aber von verwendetem
Datenbank-API und Programmiersprache ab.Grüße, Robert
Als Datenbank-API verwenden wir SQL+, Programmierprache ist PL/SQL.
Es hapert an der PL/SQL-Funktion, die den Inhalt der Long Raw-Spalte als String darstellt.
Es hapert an der PL/SQL-Funktion, die den Inhalt der Long
Raw-Spalte als String darstellt.
Sorry, da kann ich dir leider nicht weiterhelfen.
Mit einer externen Programmiersprache wie Java wäre diese Umwandlung recht einfach, aber in PL/SQL, das einzige was in der Doku steht ist dass man einen String erzeugen kann der die Hex-Darstellung des LONG RAWs enthält (wer braucht das??).
Vielleicht gibts hier aber einen PL/SQL-Experten der helfen kann?
Grüße, Robert
Warum Raw?
Hallo,
mich würde ja brennend interessieren, warum ihr Texte in einem Raw-Format speichert. Abgesehen davon höre ich schon seit Oracle 8.0.5 immer wieder, das man die LONG-Datentypen möglichst nicht mehr verwenden soll. Seltsam.
Zu deiner Frage: Hast du dir mal das Package UTL_RAW angeschaut? Mit UTL_RAW.CAST_TO_VARCHAR2 kann man RAW-Werte lesbar machen (Beispiel im Anhang).
Gruß der Janus
DECLARE
input\_string VARCHAR2(16) := 'tigertigertigert';
raw\_input RAW(128) := UTL\_RAW.CAST\_TO\_RAW(input\_string);
key\_string VARCHAR2(16) := 'scottscottscotts';
raw\_key RAW(128) := UTL\_RAW.CAST\_TO\_RAW(key\_string);
encrypted\_raw RAW(2048);
encrypted\_string VARCHAR2(2048);
decrypted\_raw RAW(2048);
decrypted\_string VARCHAR2(2048);
BEGIN
DBMS\_OUTPUT.PUT\_LINE('\> ========= BEGIN TEST RAW DATA =========');
DBMS\_OUTPUT.PUT\_LINE('\> Raw input : ' || UTL\_RAW.CAST\_TO\_VARCHAR2(raw\_input));
DBMS\_OBFUSCATION\_TOOLKIT.DES3ENCRYPT(input =\> raw\_input,
key =\> raw\_key,
encrypted\_data =\> encrypted\_raw
);
DBMS\_OUTPUT.PUT\_LINE('\> encrypted hex value : ' || rawtohex(encrypted\_raw));
DBMS\_OBFUSCATION\_TOOLKIT.DES3DECRYPT(input =\> encrypted\_raw,
key =\> raw\_key,
decrypted\_data =\> decrypted\_raw
);
DBMS\_OUTPUT.PUT\_LINE('\> Decrypted raw output : ' || UTL\_RAW.CAST\_TO\_VARCHAR2(decrypted\_raw));
DBMS\_OUTPUT.PUT\_LINE('\> ');
IF UTL\_RAW.CAST\_TO\_VARCHAR2(raw\_input) = UTL\_RAW.CAST\_TO\_VARCHAR2(decrypted\_raw)
THEN
DBMS\_OUTPUT.PUT\_LINE('\> Raw DES3 Encyption and Decryption successful');
END IF;
END;
/
Hallo,
mich würde ja brennend interessieren, warum ihr Texte in einem
Raw-Format speichert. Abgesehen davon höre ich schon seit
Oracle 8.0.5 immer wieder, das man die LONG-Datentypen
möglichst nicht mehr verwenden soll. Seltsam.Zu deiner Frage: Hast du dir mal das Package UTL_RAW
angeschaut? Mit UTL_RAW.CAST_TO_VARCHAR2 kann man RAW-Werte
lesbar machen (Beispiel im Anhang).Gruß der Janus
SCHNIPP
Danke erst mal für den Tip … Hoffentlich kommt was lesbares raus!
I. Ü. wird dieser leider so unerwünschte und schon lange für überaltet erklärte Datentyp immernoch von Oracle selbst verwendet. Hier für das abspeichern der DiscovererArbeitsmappen in den EndUserLayer-Tabellen.
hi!
I. Ü. wird dieser leider so unerwünschte und schon lange für
überaltet erklärte Datentyp immernoch von Oracle selbst
verwendet. Hier für das abspeichern der
DiscovererArbeitsmappen in den EndUserLayer-Tabellen.
bist du dir sicher, daß der datentyp „long“ ist??? und doch kein blob??? („long“ != „long raw“!!)
grüße,
tomh
Der Datentyp ist definitiv Long Raw … Leider!
CU
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich hatte mal ein ähnliches Problem mit CLOB.
Die View macht aus dem CLOB RES_VALUE drei VArCHAR2 Felder (V1…V3), die je maximal 4000 lang sein dürfen. Später kann man das wieder zusammensetzen (V1||V2||V3) und hat einen Text von bist 12000 Zeichen länge.
Vielleich lässt sich das auf Long Raw umbiegen…
Viel Erfoleg!
Nic
CREATE OR REPLACE VIEW V_SYS_RESOURCE ( RES_NAME,
V1, V2, V3 ) AS select
RES_NAME,
dbms_lob.substr(RES_VALUE,4000,1) v1,
dbms_lob.substr(RES_VALUE,4000,4001) v2,
dbms_lob.substr(RES_VALUE,4000,4001+4001) v3
from SYS_RESOURCE
CREATE TABLE SYS_RESOURCE (
RES_NAME VARCHAR2 (30) NOT NULL,
RES_VALUE CLOB,