Работа с формами FSPG

Документация по формам под SQL Server

Важные отличия: 

  • в FSPG нет процедуры CheckItem - все проверки делаем в SaveItem. 
  • в SaveItems все поля передаются только в parameters (в TSQL версии для совместимости была поддержка старого способа передачи параметров в виде @fieldXXX полей).

Процедура GetItem пример: 

CREATE OR REPLACE PROCEDURE public.fm_newtable_getitem(OUT res text, IN itemid text, IN username text, IN parameters text)
 LANGUAGE plpgsql
AS $procedure$

BEGIN
    -- SELECT 1 
	CREATE TEMP TABLE sel1 ON COMMIT DROP AS                
    select  '' code;             

	-- SELECT 2
    CREATE TEMP TABLE sel2 ON COMMIT DROP AS                
    select '' Title, '' Subtitle, 'h2' HeaderTag, 1 LineLabel;

    select to_jsonb(t1.*) from (
                select                
                (select json_agg(e.*) from sel1 e) sel1,
                (select json_agg(e.*) from sel2 e) sel2        
    ) t1 
    into res;         
        
END;
$procedure$

Процедура SaveItem (обратите внимание, как извлекаются параметры формы из parameters): 

CREATE OR REPLACE PROCEDURE public.fm_newtable_saveitem(OUT res text, IN itemid text, IN username text, IN parameters text)
 LANGUAGE plpgsql
AS $procedure$
declare fieldcode text;
tableid int;
BEGIN
	select value->>'value' from json_array_elements(parameters::json) 
	where value->>'key' = 'code' limit 1 into fieldcode;

	insert into as_crud_tables (code, title,
                           "titleTooltip", "addEditLink", "commentsCode", "immediatelyLoad", "emptyText", 
                           "filterLinkTitle", "showChecksCol", "showNumsCol", "showToolbar", "getItemsURLParameters", 
                           "toolbarAdditional",  "groupOperationsToolbar", "getFilterMakeupCallback", 
                           "filterCallback", "processRowCallback", "getItemsCallback", "remove", comments, 
                           "ctrlClickShowComment", "pageSize", roles)
	values (fieldcode, fieldcode,
            '', '', '', TRUE, 'Нет элементов', '', FALSE, TRUE, TRUE, 
            '', '', '', '', '', '', '', FALSE, FALSE, 
            FALSE, 50, 'admin')
     returning id into tableid;
	-- SELECT 1 
	CREATE TEMP TABLE sel1 ON COMMIT DROP AS                
    select 1 Result, 'OK' Msg, '/table/'|| tableid::text  successUrl, 1 EnableSaveAlert;
    
	-- SELECT 2 Outer actions
    CREATE TEMP TABLE sel2 ON COMMIT DROP AS                
    select '' type;

    select to_jsonb(t1.*) from (
                select                
                (select json_agg(e.*) from sel1 e) sel1,
                (select json_agg(e.*) from sel2 e) sel2        
    ) t1 
    into res;         
        
END;
$procedure$
Насколько полезной была статья?

Что еще посмотреть по PostgreSQL & Falcon Space

Ищем партнеров-разработчиков на T-SQL и PL/pgSQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML

Falcon Space - платформа для создания сайтов с личными кабинетами

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK