Вопросы с тегом «plpgsql»

PL / pgSQL является процедурным языком по умолчанию для системы баз данных PostgreSQL. Вопросы о PL / pgSQL, вероятно, также должны быть помечены как «PostgreSQL».

1
Создать исключение с контекстом
Когда PostgreSQL генерирует исключение, появляется строка «КОНТЕКСТ», например: ERROR: INSERT has more target COLUMNS than expressions LINE 3: ... ^ QUERY: INSERT INTO ... CONTEXT: PL/pgSQL FUNCTION "XXXXX" line 4 at SQL statement Но когда я выбрасываю исключение, этой строки там нет. Я не нашел, как добавить это. RAISE EXCEPTION …

3
Что произойдет, если два процесса попытаются ОБНОВИТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД одновременно?
Согласно документам: В то же время Обновите материализованное представление, не блокируя параллельные выборки в материализованном представлении. (...) ... ДРУГОЕ СОДЕРЖАНИЕ ... Даже с этой опцией только один REFRESH одновременно может работать с любым материализованным представлением . У меня была функция, которая проверяла время последнего обновления для МАТЕРИАЛИЗИРОВАННОГО ВИДА и, если …

3
Затраты на процедурные языки в PostgreSQL (plpython / plsql / pllua…)
Я пытаюсь найти информацию о пользовательских функциях PostgreSQL в производительности процедурных языков для задач реального времени. Как они сравниваются со встроенными функциями? Есть ли какая-либо разница (в накладных расходах), как Postgres вызывает / управляет функциями plpython и plpgsql против pllua (меня интересует интеграция Postgres / сторона контекста / передачи данных, …

2
Как получить контекст исключения для вручную вызванного исключения в PL / pgSQL?
В Postgres мы получаем «трассировку стека» исключений, используя этот код: EXCEPTION WHEN others THEN GET STACKED DIAGNOSTICS v_error_stack = PG_EXCEPTION_CONTEXT; Это прекрасно работает для «естественных» исключений, но если мы возбуждаем исключение, используя RAISE EXCEPTION 'This is an error!'; ... тогда нет трассировки стека. Согласно записи в списке рассылки , это …

1
Ошибка: функция set_valued, вызываемая в контексте, которая не может принять набор. О чем это?
Я использую Postgresql 9.1, с Ubuntu 12.04. Вдохновленный ответ Крейга на мой вопрос Конкатенацию setof типа или setof записи , я думал , я бы хорошо с использованием return query, setof recordи генератор серии в этой функцию plpgsql: create or replace function compute_all_pair_by_craig(id_obj bigint) returns setof record as $$ begin …

2
Вернуть запись с функцией PL / pgSQL - чтобы ускорить запрос
У меня есть не разветвляющийся игровой демон, написанный на Perl , который использует асинхронные запросы для записи статистики игрока в базу данных PostgreSQL 9.3. Но когда мне нужно что-то прочитать из базы данных (например, если игрок забанен или у игрока есть VIP-статус), тогда я использую синхронные запросы. Это останавливает игру …

2
Преобразовать единицы измерения
Глядя, чтобы рассчитать наиболее подходящую единицу измерения для списка веществ, где вещества приведены в разных (но совместимых) единичных объемах. Таблица перевода единиц Таблица преобразования единиц хранит различные единицы и их взаимосвязь: id unit coefficient parent_id 36 "microlitre" 0.0000000010000000000000000 37 37 "millilitre" 0.0000010000000000000000000 5 5 "centilitre" 0.0000100000000000000000000 18 18 "decilitre" 0.0001000000000000000000000 …

3
Как определить, существует ли таблица в текущем пути поиска с PLPGSQL?
Я пишу сценарий установки для приложения, которое является дополнением для другого приложения, поэтому я хочу проверить, существуют ли таблицы для другого приложения. Если нет, я хочу дать пользователю полезную ошибку. Однако я не знаю, какая схема будет содержать таблицы. DO LANGUAGE plpgsql $$ BEGIN PERFORM 1 FROM pg_catalog.pg_class c JOIN …

2
PostgreSQL Upsert не работает на секционированной таблице
Есть стол, как это: CREATE TABLE aggregated_master ( "user" BIGINT, type TEXT, date TIMESTAMP, operations BIGINT, amount NUMERIC, PRIMARY KEY ( "user", type, date ) ); Эта таблица является мастером, от которого наследуется множество разделов. Разделы выполняются MONTH в поле DATE. Например: раздел для августа-2017 будет agg_201708, а его PK …

2
Работает ли COMMIT в анонимной функции plgpsql в PostgreSQL 9.5?
Я импортирую большое количество больших файлов в несколько таблиц, которые должны быть разбиты с помощью циклов внутри блока анонимного кода plpgsql $do$. $do$ BEGIN FOR yyyy in 2012..2016 THEN EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$; END LOOP; END; $do$ LANGUAGE plpgsql Весь этот процесс должен занять около 15 …

1
Как получить доступ к новому или старому полю, указав только имя поля?
Я пишу триггер проверки. Триггер должен проверить, что сумма массива равна другому полю. Поскольку у меня много экземпляров этой проверки, я хочу написать одну процедуру и создать несколько триггеров, каждый из которых должен иметь свой набор полей для проверки. Например, у меня есть следующая схема: CREATE TABLE daily_reports( start_on date …

1
Объявите переменную табличного типа в PL / pgSQL
Мне интересно, есть ли способ объявить переменную таблицы типов в PL / pgSQL для хранения результатов запроса? Например, как я могу выразить что-то вроде: q1 = select * from foo; q2 = select * from bar; for t1 in q1: for t2 in q2: -- do something with t1 and …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.