Всем привет. У меня два вопроса - один, вероятно, чайниковский (заранее прошу извинить), второй - надеюсь нет :-)
1. Чем принципиально отличается конструкция создания фукнции в кавычках и без? Я создал функции:
-- drop function tst1 (int);
create function tst1 (int) returns int as
'begin
return $1+1;
end;'
language 'plpgsql';
-- drop function tst2 (int);
create function tst2 (int) returns int as
$BODY$
begin
return $1+1;
end;
$BODY$
language 'plpgsql';
Создались обе, и в базе они выглядят таким кодом:
CREATE OR REPLACE FUNCTION tst1(integer)
RETURNS integer AS
$BODY$begin
return $1+1;
end;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION tst1(integer)
OWNER TO postgres;
Зачем кавычки? Это старый формат или что? Неудобно экранировать, но интересно понять, зачем их сделали.
2. Вместо $BODY$ можно использовать что угодно, как это?. Создал функцию:
-- drop function tst3 (int);
create function tst3 (int) returns int as
$TTTT$
begin
return $1+1;
end;
$TTTT$
language 'plpgsql';
Обратите внимания, вместо $BODY$ написал $TTT$, да и вообще можно, что угодно писать. Создается такая:
CREATE OR REPLACE FUNCTION tst2(integer)
RETURNS integer AS
$BODY$
begin
return $1+1;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION tst2(integer)
OWNER TO postgres;
После AS вставлена строка, и $<что-угодно>$ он поменял на $BODY$. Это объяснимо логически?