Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
Топик располагается на нескольких страницах: 1 2 [все] |
amireyev Member Откуда: Сообщений: 102 |
Добрый вечер! Входящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2). Но если приходит параметр DATE, то дата конвертируется без времени. Как можно получить входящий параметр с временем. CREATE OR REPLACE PROCEDURE TST (p_param IN VARCHAR2) AS BEGIN DBMS_OUTPUT.PUT_LINE (p_param); END; BEGIN TST (SYSDATE); END; результат 08-FEB-19 Нужен результат 08-FEB-19 18:44:00 |
8 фев 19, 15:45 [21804509] Ответить | Цитировать Сообщить модератору |
123йй Member Откуда: Сообщений: 1477 |
amireyev, alter SESSION set NLS_DATE_FORMAT ![]() |
8 фев 19, 15:58 [21804523] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
amireyev, перегрузка .... stax |
8 фев 19, 16:01 [21804532] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28679 |
|
||
8 фев 19, 16:06 [21804546] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
123йй, пробовал execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss'''; не помогло |
8 фев 19, 16:07 [21804548] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
преобразовивать явно, Вы ж знаете что пришла дата BEGIN TST (to_char(SYSDATE,'dd-MON-yy hh24:mi:ss','NLS_DATE_LANGUAGE=AMERICAN')); END; .... stax |
||
8 фев 19, 16:07 [21804549] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
я видел, придется прятать в пакет .... stax |
||||
8 фев 19, 16:09 [21804551] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
Stax, к сожалению не знаю, внутри процедуры проверяю тип. |
8 фев 19, 16:09 [21804552] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28679 |
|
||
8 фев 19, 16:09 [21804555] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
.... stax |
||||
8 фев 19, 16:10 [21804558] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
Stax, CREATE OR REPLACE PROCEDURE TST (p_Date IN VARCHAR2) AS BEGIN execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss'''; DBMS_OUTPUT.PUT_LINE (p_Date); END; BEGIN TST (SYSDATE); END; Результат 08-FEB-19 Если запускаю BEGIN execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss'''; TST (SYSDATE); END; то результат правильный 08.02.2019 19:16:10. Вызов процедуры делается в другой системе. Там не смогу зашить execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss'''; Есть еще варианты? |
8 фев 19, 16:18 [21804575] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
|
||
8 фев 19, 16:21 [21804579] Ответить | Цитировать Сообщить модератору |
MazoHist Member Откуда: Сообщений: 65 |
Вызывающие что передают в итоге? ANYDATA |
||
8 фев 19, 16:21 [21804581] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
-2-, ))))))) |
8 фев 19, 16:22 [21804582] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
создать процедуру в пакете можете? .... stax |
||
8 фев 19, 16:25 [21804589] Ответить | Цитировать Сообщить модератору |
alex-ls Member Откуда: Иркутская обл - Пенза - Москва Сообщений: 6485 |
так почему явно нельзя сделать TO_CHAR? |
8 фев 19, 16:26 [21804590] Ответить | Цитировать Сообщить модератору |
alex-ls Member Откуда: Иркутская обл - Пенза - Москва Сообщений: 6485 |
Можно сделать 2 процедуры для даты и для строки |
8 фев 19, 16:27 [21804592] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
SQL> alter session set nls_date_format='"*"'; Session altered. SQL> select sysdate from dual; S - * SQL> select test1(sysdate) x from dual; X -------------------------------------------------------------------------------- date is 2019-02-08 16:32:12 SQL> select test1('abc') x from dual; X -------------------------------------------------------------------------------- str is "abc" |
||||
8 фев 19, 16:34 [21804603] Ответить | Цитировать Сообщить модератору |
Stax Member Откуда: Ukraine,Lviv Сообщений: 1597 |
я так понимаю amireyev не может выдать alter session до вызова TST если б можно было б то 21804523 зы просто интересно если * и алтер можно, то как передать не sysdate? .... stax |
||
8 фев 19, 16:40 [21804618] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17095 |
Используйте параметры подходящих типов. Не полагайтесь на неявное преобразование. |
||
8 фев 19, 16:41 [21804623] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
Stax, Процедура на нашей стороне, вызов делает другая система, и там не всегда приходит дата. Качества данных хромает. |
8 фев 19, 16:43 [21804626] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
SQL> select test1('*') x from dual; X -------------------------------------------------------------------------------- str is "*" SQL> select test1(sysdate-1) from dual; TEST1(SYSDATE-1) -------------------------------------------------------------------------------- date is 2019-02-07 16:43:13 |
||
8 фев 19, 16:44 [21804629] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17095 |
Вот и используйте те типы, которые приходят. Не надо пытаться изобрести велосипед на varchar2 - он изначально нерабочий |
||
8 фев 19, 16:56 [21804650] Ответить | Цитировать Сообщить модератору |
amireyev Member Откуда: Сообщений: 102 |
andrey_anonymous, ок, спасибо! |
8 фев 19, 16:58 [21804658] Ответить | Цитировать Сообщить модератору |
Да ну Member Откуда: Первопрестольная Сообщений: 211 |
-2-,
Заинтриговал |
||||
8 фев 19, 19:26 [21804805] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28679 |
|
||
9 фев 19, 07:12 [21805056] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14350 |
SQL> desc test1 ERROR: ORA-24332: invalid object type |
||
9 фев 19, 18:52 [21805352] Ответить | Цитировать Сообщить модератору |
Да ну Member Откуда: Первопрестольная Сообщений: 211 |
Ясно, спасибо. |
||||
11 фев 19, 12:50 [21806286] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: 1 2 [все] |
Все форумы / Oracle | ![]() |