Oracle'ın, belirli bir Oracle örneğindeki dize ifadeleri veri türünü nasıl belirlediğiyle ilgili bir farkı gözlemliyorum. En çarpıcı örnek, boş bir dizenin veri türü: tüm örneklerde ancak bir veri türü char (0); Bu istisnai bir şekilde char (32). Oracle'ın string ifadeleri veri türünü nasıl belirlediği nedir?
aşağıdaki komut
bunu göstermektedir: Bu ikili GELEN basit deyimi SEÇ '' ayrıştırır ve sütun açıklar.===
SET SERVEROUTPUT ON
DECLARE
c NUMBER;
col_cnt INTEGER;
rec_tab DBMS_SQL.DESC_TAB;
BEGIN
DBMS_OUTPUT.PUT_LINE('Testing the datatype of an empty string:');
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'SELECT '''' as empty_string FROM dual', DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
DBMS_OUTPUT.PUT_LINE('max length = ' || rec_tab(1).col_max_len);
DBMS_SQL.CLOSE_CURSOR(c);
END;
/
===
Bu özel örnekte 32 ve diğerlerinde 0 değerini döndürür. Diğer tüm durumlarda farklı değildir
PARAMETER VALUE
--------------- ---------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8MSWIN1252
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.7.0
NLS_CSMIG_SCHEMA_VERSION 5
: Aşağıdaki belirli örneğinde nls_database_parameters sorgulama sonucudur. Farklı olan tek şey yüklü TDE seçeneğidir. Ne yazık ki, bu seçenekle bir örneğim yüklenemedi ve orada test edemiyorum ...
Benim sorum, Oracle'ın dize ifadelerinin veri türünü belirleme biçimini etkileyebilecek faktörleri bilen biri. Boş dizeleriyle durumda tek değil, ama biz çalışmaktan uygulamayı durdurur belirli veri türü ve Oracle'ın davranış olduğunu fark etmelerini olmadan döküm boş dizeleri ile SELECTleri sürü sorunları eski uygulamaya sahip olarak en kritik. Herhangi bir girdi takdir edilecektir!
Konstantin
aynı sorun olması ve nihayet, tx bunu saptamak mümkün Senaryonuzu kullanılır. Bir çözümle karşılaştınız mı? –
Hayır, yapmadım :( –
Oracle'la bir dava açtık. Eğer bir şey çözülürse size geri göndereceğim. –