powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Конструкция $BODY$
3 сообщений из 3, страница 1 из 1
Конструкция $BODY$
    #38965398
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. У меня два вопроса - один, вероятно, чайниковский (заранее прошу извинить), второй - надеюсь нет :-)

1. Чем принципиально отличается конструкция создания фукнции в кавычках и без? Я создал функции:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
-- 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';



Создались обе, и в базе они выглядят таким кодом:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
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$ можно использовать что угодно, как это? . Создал функцию:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
-- drop function tst3 (int);
create function tst3 (int) returns int as
$TTTT$
begin
 return $1+1;
end;
$TTTT$
language 'plpgsql';



Обратите внимания, вместо $BODY$ написал $TTT$, да и вообще можно, что угодно писать. Создается такая:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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$. Это объяснимо логически?
...
Рейтинг: 0 / 0
Конструкция $BODY$
    #38965418
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Agafonov,

это не конструкция создания функций, а банальный способ квотирования (кавычения) текста

RTFM
http://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS 4.1.2.4. Dollar-quoted String Constants
...
Рейтинг: 0 / 0
Конструкция $BODY$
    #38965568
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Да, спасибо, понял. Можно вообще $$....$$ использовать. )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Конструкция $BODY$
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]