2010-11-18 15 views
2

Ich versuche, ein Paket mit im SQL Developer zu debuggen. Die Methode, die ich zu debuggen versuchen 2 Parameter nimmtOracle SQL Developer - Hilfe zum Debuggen

PROCEDURE procedure_name (dblink IN CHAR, bDebug IN BOOLEAN DEFAULT FALSE) 

Wenn ich auf „Debug“ Symbol klicken, fragt es für Eingaben, die ich brauche, um dieses Verfahren zu geben. Ich gebe

dblink:='linkname'; 
bDebug:=TRUE; 

aber wenn es das Debuggen beginnt, sehe ich den Wert von dblink als

'linkname             
' 

heißt Linkname, viele Räume und dann das Ende Zitat. also, wenn ich in Code versuche ich dies zu tun

`strSrc VARCHAR(120) := 'tablename'||dblink;` 

gibt es mir Fehler, dass Puffer zu klein ist, was Sinn macht. Aber warum tut SQL Developer das? wie man es repariert?

+3

Gibt es einen Grund, warum der Parameter als 'CHAR' anstelle von' VARCHAR2' deklariert wird? Ich vermute, da kommt die Polsterung her. –

+0

Ich bin nicht sicher, warum es als 'CHAR' anstelle von' VARCHAR' deklariert wurde. Aber es ist in der Produktion, so dass ich nicht denke, dass ich es für das aktuelle Debugging ändern kann ---- meine einzige Sorge ist die Polsterung. –

Antwort

2

Ich vermute, dass Ihre Auffüllung kommt aus, wie SQL Developer definiert seine Variable zu binden (es wird wahrscheinlich definiert es als ein CHAR (4000)). Vorerst sollten Sie, indem Sie trim() um die dblink Variable um diese in Ihrem Testcode zu erhalten fähig sein:

strSrc VARCHAR(120) := 'tablename'||trim(dblink); 

Beachten Sie, dass dies normalerweise nicht, wenn das Verfahren eine wörtliche geben wurde benötigt werden (oder ein korrekt dimensionierte CHAR-Variable, ein VARCHAR, usw.), wie es der Produktionscode wahrscheinlich macht.

+0

Ich benutze bereits die Trimmfunktion, aber dafür musste ich den Code ändern. Wie ich bereits gesagt habe, ist der Code bereits in Produktion und ich möchte den Code nicht ändern. –

0

Erstellen Sie für Debugging-Zwecke eine Wrapper-Prozedur, die einen VARCHAR2-Parameter akzeptiert und dann an Ihre Prozedur übergibt; Dann debuggen Sie es in SQL Developer, indem Sie Ihren Wrapper aufrufen.