SQL inside
Интересно, а есть языки программирования, где можно писать так:
$user = auth ();
if ('admin' == $user)
delete from `Notes` where `ID` = $_GET['id'];
else
update `Notes` set `AttempsToIllegallyDeleteNote` = `AttempsToIllegallyDeleteNote`+1 where `ID` = $_GET['id'];
По идее, клёво было бы.
Update: А вот так — вообще красота:
$a = select * from `Notes` where `Stamp` > $some_stamp order by `Stamp` [$i];
Или вот:
foreach (select * from `Notes` as $note) { ... }
Неужели так намного длинее?
%%$this->db->Query(’delete from ’Notes’ where ’ID’ = ’».$_GET[’id’].«’»);%%
Оно не длиннее, оно уродливее. Оно требует экранирования кавычек в кавычках, и так далее.
Например, %%if ($a) b (); else c()%% выглядит как полное г.; %%if a then b else c%% читать намного приятнее.
А не надо их экранировать, типографить их надо.
Embeded sql.
Детали самого интерфейса с sql зависят от host-language и от его политики в области общих имен и common-блоков
T-SQL от Microsoft.
Мы так практически и пишем...
А можно поподробнее, пожалуйста?
Ну, примерно так:
%% select @VATExtra = VATExtra
from ExtraVAT e, Client c with( nolock )
where c.CategoryID = e.CategoryID
and c.ClientID = @ClientID
if ( @VATExtra = 0 ) return @CostWithVAT
%%
Разве что цикл по выборке коряво организовывать приходится...
Уточняю: язык T-SQL — это язык хранимых процедур сервера MS-SQL. Достаточно мощный, чтобы на нём без проблем писать всю бизнес-логику билинга.
Вот только ООП там и не пахнет :)
Да он и не нужен вроде как ;)
Ясно, спасибо.
T-SQL тут вообще не по теме. А Embedded SQL сначала обрабатывает препроцессор. Такой препроцессор можно и для PHP организовать.