Главная страница
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.051 c
6-1256544120
ocean
2009-10-26 11:02
2013.03.22
Как получить телепрограмму с Куличков?


3-1281355338
defen
2010-08-09 16:02
2013.03.22
Добавление файла в базу


15-1344577423
желчь
2012-08-10 09:43
2013.03.22
Kerk стал мужиком


15-1331287470
Александар
2012-03-09 14:04
2013.03.22
Подмена(дублированя) пакетов между клиентом и определёном ip


2-1328179304
cardon
2012-02-02 14:41
2013.03.22
Подсказка в StringGrid