Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Знатокам Оракла и вообще.   Найти похожие ветки 

 
Ega23 ©   (2012-06-21 23:11) [0]

Заспорили тут с соседом.
Вот такой вот скрипт для MSSQL (ну по крайней мере для 2000)

declare @x int, @y int;
set @x=3;
set @y=2;
select @x/@y;

должОн выдать 1.
Скрипт на Oracle:

DECLARE
   x INTEGER;
 y INTEGER;
 res INTEGER;

BEGIN
 
 x := 3;
 y := 2;

 SELECT ( x / y ) INTO res FROM DUAL;
 
 dbms_output.put_line( res );

END;

выдаёт 1.5

Вопрос: оператор деления в Оракле зависит от типов операндов, или нет?


 
Дмитрий С ©   (2012-06-22 00:12) [1]

Пользуясь случаям выражу недоумение языкам не имеющим операции целочисленного деления. В MySQL слава богу ввели, ибо функция floor на мой взгляд ненадежная.

По теме. В вопросе же ответ, нет?


 
Омлет ©   (2012-06-22 00:26) [2]

> Дмитрий С ©   (22.06.12 00:12) [1]
> Пользуясь случаям выражу недоумение языкам не имеющим операции
> целочисленного деления.


div? Где это его нет?


 
asail ©   (2012-06-22 00:27) [3]

Я с ораклом не дружу, но вот это смутило:

DECLARE
...
res INTEGER;
...
dbms_output.put_line( res );

Как тут может вернуться 1.5. Если тип res явно указан как Integer? Независимо от того, что мы там с эти res делали до того (делили, умножали и т.д.).


 
Дмитрий С ©   (2012-06-22 00:27) [4]


> div? Где это его нет?

Например в том же MSSQL или в JavaScript


 
Ega23 ©   (2012-06-22 00:40) [5]


> div? Где это его нет?


В MSSQL нет. Оператор "/" зависит от типов операндов.
Я не берусь судить, хорошо это, или плохо. В MSSQL это так.


 
В школу!   (2012-06-22 07:45) [6]

Срочно читать документацию! Например, Oracle SQL Reference


 
имя   (2012-06-22 07:48) [7]

Удалено модератором


 
Омлет ©   (2012-06-22 08:25) [8]

> Ega23 ©   (22.06.12 00:40) [5]
> В MSSQL нет. Оператор "/" зависит от типов операндов.


Т.е. оно всё же есть, если integer / integer = integer;

> Дмитрий С ©   (22.06.12 00:27) [4]
> JavaScript


floor?


 
Игорь Шевченко ©   (2012-06-22 09:39) [9]

в Oracle нет типа INTEGER


 
AV ©   (2012-06-22 09:47) [10]

subtype INTEGER is NUMBER(38,0);


 
БарЛог ©   (2012-06-22 09:48) [11]

Мне б таких соседей. А то все цветы да уборка в подъезде.


 
Ega23 ©   (2012-06-22 10:49) [12]


> Т.е. оно всё же есть, если integer / integer = integer;


Это не совсем то. Есть оператор деления, есть оператор целочисленного деления. В обоих случаях вполне ожидаемый и предсказуемый результат.
В случае MSSQL оператор совмещён. Отсюда результат - не предсказуемый (пока не наткнёшься на ситуацию и в BOL не залезешь).


 
AV ©   (2012-06-22 11:03) [13]


> INTEGER is NUMBER

что тут непонятного


 
MsGuns ©   (2012-06-22 16:37) [14]

Тема высосана из пальца. Типа а если в барбоса на остановке кинуть кирпич, он полезет кусаться ?



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.11 c
1-1260020917
defen
2009-12-05 16:48
2013.03.22
асинхронное шифрование rsa


15-1329373822
Димка На
2012-02-16 10:30
2013.03.22
Как узнать кто "мучает" диск?


15-1338185692
Екатерина
2012-05-28 10:14
2013.03.22
АРМ


15-1344959281
Рекрут
2012-08-14 19:48
2013.03.22
Что должен уметь сисадмин?


15-1349179159
картман
2012-10-02 15:59
2013.03.22
частица "же"