Изменить сеанс не изменяет сеанс должным образом - PullRequest
1 голос
/ 13 февраля 2020

Я использую Oracle базу данных для проекта. Я вставил данные в таблицу следующей структуры

CREATE TABLE targetCustord(
cust_code VARCHAR2(4),
order_date DATE,
product_code VARCHAR2(8),
order_id NUMBER,
product_price NUMBER(8,2),
product_amount NUMBER(6),
transaction_id NUMBER,
PRIMARY KEY (cust_code, order_date, product_code, order_id)
USING INDEX);

Изначально я изменил сеанс на

ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'SYYYY-MM-DD HH24:MI:SS.FF9';

, который работал нормально, и содержимое журналов в требуемом формате. Но, когда я изменил сеанс на

ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-YYYY HH24:MI:SS.FF9';

Не было никаких изменений ни в журналах, ни в содержимом таблицы. Сессия не была изменена, и она придерживалась старой сессии.

В чем здесь проблема? Я ошибся в понимании чего-либо?

Может ли кто-нибудь мне помочь

Заранее спасибо

1 Ответ

1 голос
/ 13 февраля 2020

Пожалуйста, помните, что oracle хранит метки времени или дату в своем двоичном формате, параметры NLS просто используются, чтобы показать детали клиенту.

Теперь перейдем к вашему вопросу. Ваша таблица не содержит столбец timestamp, она содержит столбец date, поэтому вам нужно указать параметр NLS_DATE_FORMAT, чтобы увидеть изменения в отображении данных date. Примерно так:

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';

Вы также можете проверить значение параметра NLS для сеанса, базы данных и экземпляра, используя следующие представления:

select * from NLS_SESSION_PARAMETERS;
select * from NLS_DATABASE_PARAMETERS;
select * from NLS_INSTANCE_PARAMETERS;

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...