Oracle для профессионалов Том Кайт торгово-издательский дом DiaSoft


declare l_soma_variable varchar2(25)



Download 0,99 Mb.
Pdf ko'rish
bet63/93
Sana16.03.2022
Hajmi0,99 Mb.
#495509
1   ...   59   60   61   62   63   64   65   66   ...   93
Bog'liq
tom kait oracle dlia professionalov[0001-0091]

declare
l_soma_variable varchar2(25);
begin
if (sorae_condition)
then
l_some_variable : = f (...);
end if;
for x in (select * from T where x = l_some_variable)
loop
Целью является получение всех строк таблицы Т, которые в столбце X имеют пустое
значение, если некоторое условие не выполнено, или определенное значение, если это
условие выполнено.
Суть жалобы состояла в том, что, в Oracle этот запрос не возвращал данных, если
переменная L_SOME_VARIABLE
не получала значения явно (когда у нее оставалось


Разработка успешных приложений для Oracle
значение NULL). В СУБД Sybase или SQL Server все было не так — запрос находил стро-
ки с пустым
 (NULL)
значением в столбце X. Я встречался с этим практически при любом
переводе приложения с СУБД Sybase или SQL Server на Oracle. Язык SQL предполагает
использование трехзначной логики, и СУБД Oracle реализует пустые значения так, как
того требует стандарт ANSI SQL. По этим правилам сравнение столбца X со значением
NULL не дает ни
 True,
ни
 False
— результат фактически
 неизвестен.
Следующий при-
мер показывает, что я имею в виду:
ops$tkyte@ORA8I.WORLD> select * from dual;
D
X
ops$tkyte@ORA8I.WORLD> select * from dual where null=null;
no rows selected
ops$tkyte@ORA8I.WORLD> select * from dual where null<>null;
no rows selected
В первый раз это может показаться странным: в Oracle NULL не равен и не не равен
NULL. СУБД SQL Server по умолчанию ведет себя не так: в SQL Server и Sybase NULL
равен NULL. Ни Oracle, ни Sybase, ни SQL Server не выполняет операторы SQL
 непра-
вильно
— они просто делают это
 по-разному.
Все эти СУБД якобы соответствуют стан-
дарту ANSI, но все равно работают по-разному. Есть неоднозначности, проблемы со-
вместимости с прежними версиями и так далее, которые необходимо решать. Например,
СУБД SQL Server поддерживает метод сравнения со значением
 NULL,
диктуемый стан-
дартом ANSI, но не по умолчанию (это нарушило бы работу тысяч уже существующих
приложений, созданных для этой СУБД).
Одним из решений проблемы могло быть переформулирование запроса следующим
образом:

Download 0,99 Mb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   93




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish