powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CASE ошибка преобразования
4 сообщений из 4, страница 1 из 1
CASE ошибка преобразования
    #39681446
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare
    l_text varchar2(300 char) := 'begin';
begin
  for j in ( select level lvl from dual connect by level < 3 )
  loop
      l_text := l_text || 
                     case
                     --Number
                     when j.lvl = 1 then j.lvl
                     --String
                     when j.lvl = 2 then 'asdasdasdas'
                     end;
  end loop;
end;  
--------------------------------------
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 11



Работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
    l_text varchar2(300 char) := 'begin';
begin
  for j in ( select level lvl from dual connect by level < 3 )
  loop
      l_text := l_text || 
                     case
                     --Number
                     when j.lvl = 1 then to_char(j.lvl)
                     --String
                     when j.lvl = 2 then 'asdasdasdas'
                     end;
  end loop;
end;  



Что за слабость?
...
Рейтинг: 0 / 0
CASE ошибка преобразования
    #39681450
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brzl,

А самому подумать?
каой тип данных выходит из этой конструкции?

Код: plsql
1.
2.
3.
4.
5.
6.
                     case
                     --Number
                     when j.lvl = 1 then j.lvl
                     --String
                     when j.lvl = 2 then 'asdasdasdas'
                     end;
...
Рейтинг: 0 / 0
CASE ошибка преобразования
    #39681455
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из доки
https://docs.oracle.com/cd/B28359_01/server.111/b28286/expressions004.htm#SQLRF20037

For a simple CASE expression, the expr and all comparison_expr values must either have the same datatype (CHAR, VARCHAR2, NCHAR, or NVARCHAR2, NUMBER, BINARY_FLOAT, or BINARY_DOUBLE) or must all have a numeric datatype. If all expressions have a numeric datatype, then Oracle determines the argument with the highest numeric precedence, implicitly converts the remaining arguments to that datatype, and returns that datatype.
...
Рейтинг: 0 / 0
CASE ошибка преобразования
    #39681470
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brzlЧто за слабость?


"На зеркало неча пенять, коли рожа крива" ©
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CASE ошибка преобразования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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