Я пытаюсь извлечь данные из таблицы Oracle. Столбец определяется как char (40) и содержит расширенные значения ASCII. В настоящее время в SQL * Plus расширенные символы отображаются как вопросительный знак «перевернутый». Мне нужно иметь возможность извлекать символы ASCII с десятичным значением> 128 и отображать в расширенной или 8-битной схеме кодирования.
Набор символов Oracle ASCII - .Net-расширения
- Выходной ток
выберите MyField из MYTABLE;
[email protected]¿pmxJ¿¿¿.¿¿¿P9¿¿¿¿¿+¿¿w) ¿@ Y @ B¿¿¿
- Decimal Values
Тип = 96 Len = 40:
98,64,189,112,109,120,74,156,27,231,167,46,224,28,130,183,80,57,202,232,150,239,144,43,169,1,186,119,41,254,64,89,64,12,19,8,66,194,136,210
- База данных CharacterSet
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
ПАРАМЕТР ЗНАЧЕНИЕ
------------------------------ ------ ----------------------------------
NLS_CSMIG_SCHEMA_VERSION 5
NLS_LANGUAGE АМЕРИКАНСКОГО
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY АМЕРИКА
NLS_NUMERIC_CHARACTERS.,
NLS_CHARACTERSET US7ASCII
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.M I.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 UTF8
NLS_RDBMS_VERSION 10.2.0.3.0
не имеют большой опыт работы с Oracle. Любая помощь будет принята с благодарностью!
Спасибо, Бреннан
Я был в состоянии извлечь данные в десятичном формате и обработать его в функции .Net без проблем. Оператор SQL является немного беспорядочным. Я пытаюсь написать функцию для помощи в запросе. У меня возникают проблемы с созданием функции.
текущий SQL оператор:
select DECRYPTDATA(
ASCII(SUBSTR(ACTIONCD,1,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,2,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,3,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,4,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,5,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,6,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,7,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,8,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,9,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,10,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,11,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,12,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,13,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,14,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,15,1)) || ',' ||
ASCII(SUBSTR(ACTIONCD,16,1)), '1' )
from ORDERACTIONS where KEYNUM = 1
Я хотел бы сделать быструю функцию, чтобы вернуть эту строку.
Ниже приведена функция, которая не будет компилироваться. Какие-либо предложения?
create or replace function ASCIITODEC(p_actioncd VARCHAR2)
return VARCHAR2 is
begin
return ASCII(SUBSTR(p_actioncd,1,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,2,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,3,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,4,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,5,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,6,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,7,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,8,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,9,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,10,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,11,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,12,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,13,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,14,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,15,1)) || ',' ||
ASCII(SUBSTR(p_actioncd,16,1)))
end ASCIITODEC;
/
Спасибо, Бреннан
, в котором был введен правильный отступ b ut отображается здесь в непрерывном формате. Во всяком случае вы можете нажать enter после; сделать читаемым – Aziz