PostgreSQL - Как увидеть функцию Text / Source в pgAdmin? - PullRequest
4 голосов
/ 31 марта 2011

Я хочу иметь возможность ВЫБРАТЬ код функции. Когда я пытаюсь этот запрос:

select prosrc from pg_proc where proname = 'my_proc'

Я получаю пустой столбец.

Дело в том, что столбец prosrc содержит текст функции. Когда я пытаюсь этот запрос:

select proname from pg_proc where prosrc ~* 'part of Function text'

Я получаю правильное количество и названия функций. Это просто не отображает prosrc. Есть идеи?

PostgreSQL 8.2. pgAdmin III 1.12.2.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 августа 2013

Это потому, что значение prosrc часто начинается с перевода строки.Обычно при создании функции вы начинаете новую строку после того, как $$ (или $ what $) цитирует текст функции:

CREATE FUNCTION myfunction() RETURNS integer AS $$
    SELECT 1
$$ LANGUAGE sql;

Если вы определили это как:

CREATE FUNCTION myfunction() RETURNS integer AS $$SELECT 1$$ LANGUAGE sql;

Тамв тексте функции не будет перевода строки.

Вы можете отключить начальные переводы строки с помощью функции ltrim:

SELECT ltrim(prosrc, E'\x0a') FROM pg_proc WHERE proname = 'myfunction';

В качестве альтернативы, если вы измените размер строки в PGAdmin по вертикали, вы увидитеполное значение.

2 голосов
/ 31 марта 2011

Я столкнулся с этим, используя pgAdmin III на PostgreSQL 9.0.3.Похоже, это связано с тем, что строка слишком длинная, чтобы pgAdmin III отображался правильно.Если вы выполните его в командной строке, то все будет в порядке.Многие инструменты управления базами данных сталкиваются с проблемами усечения строк.

Интересно, что если вы выберете ячейку prosrc в pgAdmin III и скопируете ее с клавиатуры, вы можете вставить вывод.Вероятно, это какая-то странная ошибка отображения.

0 голосов
/ 22 ноября 2017

Файл> Параметры> Инструмент запросов> Редактор запросов> Макс. символов в столбце

Или просто просмотрите его в браузере объектов.

...