Ich habe eine Clob-Variable, muss es varchar2 Variable zuweisen. Die Daten innerhalb clob var weniger als 4000 (i..e varchar2 des maxsize) oracle10 +Wie man CLOB zu VARCHAR2 innerhalb von Orakel pl/sql konvertiert
I
versuchtreport_len := length(report_clob);
report := TO_CHAR(dbms_lob.substr(report_clob, report_len, 1));
report_clob := null;
aber es stellt sich Bericht in Long-Wert, die ich sehe, während des Debuggens. Auch wenn ich diese sql (proc) von meinem C# -Code aus anrufe. Es beschwert sich, sagen Puffer zu klein, weil ich Parameter wie Varchar senden, aber die obige Umwandlung könnte es in lange Wert verwandeln.
ich sogar direkte Zuordnung versucht
report_clob := report
das gleiche Ergebnis zu erzielen.
EDIT
Ok, die unten stehenden Fragen finden Sie zu beantworten: Debug in PL/SQL Entwickler Testskript verwenden. Berichtsvariable ist varchar2 (4000). Wenn ich nach der zweiten Zeile gehe. Der Bericht zeigt einen langen Wert an und sagt nur (Long Value). kann nicht einmal den Inhalt sehen.
Bericht und Bericht_Clob sind Variable aus der Prozedur. Diese Prozedur wird aus C# -Code aufgerufen.
Es gibt einen Ausnahme-String-Puffer zu klein in C#, wenn ich diese Prozedur aufrufen. Ich habe 5000 als Größe der Berichtsvariablen in C# angegeben, die ausreicht, um 4000 Max. Zeichenwerte von der Prozedur zu erhalten. Also ich denke, das Problem liegt nicht dort.
Und wenn ich Bericht zuweisen: = 'eine Zeichenfolge ....' dann funktioniert C# Anruf gut.
Also meine Untersuchung sagt, dass report: = transform (report_clob) macht Bericht zu einem langen Wert oder so etwas (seltsam), die C# -Code problematisch macht, größeren Wert in 5000 Varchar out Parameter zu behandeln.
Weitere Details werde ich gerne zur Verfügung stellen.
Wie wird 'report' deklariert? 'LONG' oder' VARCHAR2'? Wie werden Sie debuggen, und wie geben Sie den Wert an 'C#' - Funktion Rückgabe oder Ausgabeparameter, und welcher Typ ist das? –
'report: = CAST (report_clob AS VARCHAR2 (3999));' – Annjawn
'DBMS_LOB_str' gibt ein VARCHAR2 zurück, die Funktion' TO_CHAR' wird nicht benötigt. Was nennst du auch einen langen Wert? Wie debuggen Sie? Welchen Nachrichtenfehler erhalten Sie genau (zB Oracle oder C#)? Wie wird die Berichtsvariable deklariert? –