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) { ... }
Дальше
7 комментариев
Inferno 2004

Неужели так намного длинее?

%%$this->db->Query(’delete from ’Notes’ where ’ID’ = ’».$_GET[’id’].«’»);%%

Илья Бирман

Оно не длиннее, оно уродливее. Оно требует экранирования кавычек в кавычках, и так далее.

Например, %%if ($a) b (); else c()%% выглядит как полное г.; %%if a then b else c%% читать намного приятнее.

Inferno 2004

А не надо их экранировать, типографить их надо.

artreal 2004

Embeded sql.
Детали самого интерфейса с sql зависят от host-language и от его политики в области общих имен и common-блоков

Weasel 2004

T-SQL от Microsoft.
Мы так практически и пишем...

Илья Бирман

А можно поподробнее, пожалуйста?

Weasel 2004

Ну, примерно так:

%% select @VATExtra = VATExtra
from ExtraVAT e, Client c with( nolock )
where c.CategoryID = e.CategoryID
and c.ClientID = @ClientID

if ( @VATExtra = 0 ) return @CostWithVAT
%%

Разве что цикл по выборке коряво организовывать приходится...

Weasel 2004

Уточняю: язык T-SQL — это язык хранимых процедур сервера MS-SQL. Достаточно мощный, чтобы на нём без проблем писать всю бизнес-логику билинга.

Вот только ООП там и не пахнет :)

Илья Бирман

Да он и не нужен вроде как ;)

Ясно, спасибо.

q 2004

T-SQL тут вообще не по теме. А Embedded SQL сначала обрабатывает препроцессор. Такой препроцессор можно и для PHP организовать.

Мои книги