Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD / 13 сообщений из 13, страница 1 из 1
03.07.2018, 18:07
    #39669055
artemiuss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
Обнаружил в SYS.STANDARD только такие варианты функции TO_CHAR с аргументом типа NUMBER:
Код: plsql
1.
2.
3.
function TO_CHAR(left number, right varchar2) return VARCHAR2;
function TO_CHAR(left number, format varchar2, parms varchar2)
return varchar2;

Каким образом выполняется с одним входящим аргументом типа NUMBER?
PS Oracle 12.2.0.1.0
...
Рейтинг: 0 / 0
03.07.2018, 18:28
    #39669065
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
artemiuss,

Думаю причина в
Код: plsql
1.
2.
  function TO_CHAR (RIGHT VARCHAR2) return VARCHAR2;
    pragma BUILTIN('TO_CHAR',14, 0, 2);



и неявном преобразовании.
...
Рейтинг: 0 / 0
03.07.2018, 22:35
    #39669141
artemiuss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
alwan,

Я тоже склоняюсь к этой версии.

Вот наковырял из предыдущей версии оракла такое:
Код: plsql
1.
2.
3.
4.
5.
6.
-- Just call the other to_char with a null format string. 
-- Perhaps this can be done more intelligently in the future. JEM 3/14/90.
--  function TO_CHAR(LEFT NUMBER)        return varchar2 is
--  begin
--    return TO_CHAR(LEFT, '');
--  end TO_CHAR;

По-видимому, неявное приведение и есть более "умное" решение
...
Рейтинг: 0 / 0
04.07.2018, 00:21
    #39669166
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
alwanartemiuss,

Думаю причина в
Код: plsql
1.
2.
  function TO_CHAR (RIGHT VARCHAR2) return VARCHAR2;
    pragma BUILTIN('TO_CHAR',14, 0, 2);



и неявном преобразовании.неявное преобразование неявного преобразования к неявному преобразованию. Такой to_char делает ничего.
...
Рейтинг: 0 / 0
04.07.2018, 06:38
    #39669209
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
В контексте SQL у to_char вообще три варианта и все три с одинаковым набором параметров:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select fm.name||'('||(select listagg('p'||argnum||' '||datatype, ', ') within group (order by argnum)
                      from v$sqlfn_arg_metadata fam where fam.func_id = fm.func_id)||')' f 
from v$sqlfn_metadata fm
where name = 'TO_CHAR';

F                                           
--------------------------------------------
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
...
Рейтинг: 0 / 0
04.07.2018, 11:15
    #39669334
artemiuss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> select fm.name||'('||(select listagg('p'||argnum||' '||datatype, ', ') within group (order by argnum)
  2                        from v$sqlfn_arg_metadata fam where fam.func_id = fm.func_id)||')' f
  3  from v$sqlfn_metadata fm
  4  where descr = 'TO_CHAR';

F
--------------------------------------------------------------------------------
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
OPTDIS()
OPTITMES()
OPTITTZS()
OPTISTMS()
OPTISTZS()
OPTIIYMS()
OPTIIDSS()
OPTITZ2C1()
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
TO_CHAR(p1 NUMERIC, p2 STRING, p3 STRING)
TO_CHAR()
TO_CHAR()

13 rows selected


Еще немного информации для размышления...
...
Рейтинг: 0 / 0
04.07.2018, 11:44
    #39669361
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
-2-неявное преобразование неявного преобразования к неявному преобразованию. Такой to_char делает ничего.

Почти ничего. Такой тучар гарантированно отдаст VARCHAR2. Есть "черная коробка", которая умеет делать заранее известные неявные преобразования. Это может быть полезно для использования в приложениях, которые не умеют делать такие преобразования, или в которых есть проверки на тип данных
...
Рейтинг: 0 / 0
04.07.2018, 13:14
    #39669454
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
alwanТакой тучар гарантированно отдаст VARCHAR2.Мысль слишком глубока для понимания.
...
Рейтинг: 0 / 0
04.07.2018, 15:13
    #39669536
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
-2-Мысль слишком глубока для понимания.
Это стеб, да? Может выразился не совсем корректно, но смысл думаю должен быть понятен.
...
Рейтинг: 0 / 0
05.07.2018, 09:33
    #39669823
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
alwanгарантированно отдаст
т.е. в других случаях
Код: plsql
1.
return sometype

не гарантирует возврат sometype, а может вернуть какой-то другой случайный тип?
...
Рейтинг: 0 / 0
05.07.2018, 11:33
    #39669918
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
env,

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

Давайте попробую переформулировать. Если нам по каким-то причинам нужно получить именно и только VARCHAR2 (например приложение само не умеет неявно преобразовывать). Мы можем передать в
Код: plsql
1.
TO_CHAR (RIGHT VARCHAR2) return VARCHAR2;

любой тип, который оракл может неявно преобразовать в VARCHAR2 и получить на выходе то что нужно.
...
Рейтинг: 0 / 0
05.07.2018, 15:46
    #39670131
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
alwanЕсли нам по каким-то причинам нужно получить именно и только VARCHAR2
Код: plsql
1.
cast("именно и только" as varchar2(4000 char))
...
Рейтинг: 0 / 0
05.07.2018, 15:49
    #39670136
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD
env,

Что ж вы со мной так поспорить хотите =) Я же нигде не сказал что это единственный возможный вариант. Вернитесь к началу треда, из-за чего все началось
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перегруженная функция TO_CHAR (number) отсутствует в SYS.STANDARD / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]