Главная страница
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.179 c
1-1295243133
Xmen
2011-01-17 08:45
2013.03.22
сохранение Word файла в Blob поле


2-1337336308
leklerk
2012-05-18 14:18
2013.03.22
Проверка, работает ли компьютер


1-1296984241
Wadimka
2011-02-06 12:24
2013.03.22
Как использовать сжатие GZIP в запросе SOAP для компонентTHTTPRIO


15-1351850650
AV
2012-11-02 14:04
2013.03.22
Нейронные сети распознавания изображения. Для идиотов :)


15-1340637706
Барлог_
2012-06-25 19:21
2013.03.22
щебенка в колодец. как отфильтровать?