Показаны сообщения с ярлыком begin_end. Показать все сообщения
Показаны сообщения с ярлыком begin_end. Показать все сообщения

среда, 9 августа 2017 г.

PostgreSQL: пример исполняемого блока для создания таблицы DUAL

DO $$
DECLARE
b_parent_id numeric(15);
b_ppo_id numeric(15);
v_doc_id numeric(15);
v_rr_id numeric(15);
v_gen numeric(15);
v_gen1 numeric(15);
r RECORD; -- некоторая промежуточная запись
ru RECORD; -- некоторая промежуточная запись
dd RECORD; -- некоторая промежуточная запись
sysdate Date := now(); -- текущая дата
BEGIN
-- удалим временную таблицу, если существует
drop table if EXISTS dual;
-- создадим временную таблицу
create temp table dual (dummy integer); -- пустышка
execute 'insert into dual(dummy) values(0)';
end $$;

четверг, 17 ноября 2016 г.

Получение значения из SQL-запроса с вычисляемым наименованием колонки

/* Пример блочного выполнения PL/SQL с вычисляемым наименованием колонки в переменной myCOLUMN и запоминанием результата такого запроса в переменной myRESULT */
DECLARE
    myRESULT varchar(255);
    myCOLUMN varchar(255) := 'user_id';
BEGIN
    execute immediate 'select '||myCOLUMN||' from dba_users where rownum = 1' into myRESULT;
    dbms_output.put_line(myRESULT);
END;

Для сравнения
Тот же пример, но без вычисляемого наименования колонки, т.е. без "execute immediate":
DECLARE
    myRESULT varchar(255);
BEGIN
    select user_id into myRESULT from dba_users where rownum = 1;
    dbms_output.put_line(myRESULT);
END;

Архив