如何在Postgres中迭代类型内部类型

时间:2015-09-08 08:57:36

标签: postgresql

您好我正在创建一个插入元数据的过程。我创建了类型,我在另一种类型中包含了1种类型,在程序中我正在迭代它以获取值。由于我是PostgreSQL的新手,我不确定这是否有效。我也无法测试这个。有人可以建议如何做到这一点。

Create Type Form_details as(
                     formName character varying(100),
                     submittedBy numeric,
                      createdDate date,    
                     updatedBy numeric,
                     updatedDate date,
                     comments character varying(500),
                  Sections Section[]  

)

create type Section as (
                           sectionName character varying(100),
                           sectionLabel character varying(100),                           
                           sectionOrder numeric                           



                     )

我写的程序是

  CREATE OR REPLACE FUNCTION form_insertion(formdetails form_details[])
  RETURNS character varying AS
$BODY$

DECLARE 
         form_details_seq integer;
         section_seq integer;
         formName character varying(100);
         submittedBy numeric;
         createdDate date;    
         comments character varying(500);
                formStatusId numeric;

         sectionOrder numeric;
         sectionName character varying(100);
         sectionLabel character varying(100);
         attributeId numeric;

         I integer;
         J integer;
begin
FOR I IN 1..formdetails.COUNT

LOOP

formName             :=formdetails[I].formName;
formStatusId         :=formdetails[I].formStatusId;
comments             :=formdetails[I].comments;
  RAISE NOTICE '%', formName;

  FOR J IN 1..formdetails.Section.COUNT
   LOOP

   sectionName             :=formdetails[I].Section[J].sectionName;
 RAISE NOTICE '%', sectionName;

   END LOOP ;


END LOOP;

Return formName,sectionName;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

这不是完整的程序。但我试着用这个来测试。您能告诉我我的方法是否正确,如何从数据库端进行测试。我将如何传递此参数。顺便说一下,我创建的类型来自Java对象。这个程序将从java端调用。任何帮助将不胜感激。

json如下

'{"functionId":"","subFunctionId":"","groupId":"Audit","formId":"","formName":"formname"submittedBy":"20001259","createdDate":"2015-08-06","updatedBy":"","updatedDate":"","comments":"","formStatusId":"","formStatus":"","formLanguage":"","isFormConfigured":"","formChange":"Yes","sectionLevelChange":"Yes","isActive":"","formVersionNo":"","formFooterDetails":"","formHeaderDetails":"","images":[{"imageId":"","imageTempId":"","imageTempUrl":"","imageName":"","imageUrl":"","isDeleted":"","imagesDesc":""}],"imagesDescLevel":"","sectionElements":[{"sectionElement":[{"sectionId":"","sectionTempId":"sectionId+DDMMHHSSSS","sectionName":"section1","sectionChange":"Yes","stepLevelChange":"Yes","sectionLabel":"","sectionOrder":"","outOfScopeSection":"false","punchListSection":"false","images":[{"imageId":"","imageTempId":"","imageTempUrl":"","imageName":"","imageUrl":"","isDeleted":"","imagesDesc":""}],"imagesDescLevel":"","isDeleted":"","stepElements":[{"stepElement":[{"stepId":"","stepTempId":"stepId+DDMMHHSSSS","stepName":"step1","stepLabel":"","stepOrder":"","stepChange":"Yes","questionLevelChange":"Yes","images":[{"imageId":"","imageTempId":"","imageTempUrl":"","imageName":"","imageUrl":"","isDeleted":"","imagesDesc":""}],"imagesDescLevel":"","isDeleted":"","questionAnswerElements":[{"questionAnswerElement":[{"questionId":"","questionClientUid":"","questionDescription":"","questionAccessibility":"","isPunchListQuestion":"","questionChange":"Yes","questionOrder":"","isDeleted":"","images":[{"imageId":"","imageTempId":"","imageTempUrl":"","imageName":"","imageUrl":"","isDeleted":"","imagesDesc":""}],"imagesDescLevel":"","answerId":"","answerClientUid":"","elements":[{"element":[{"elementId":"","elementMapId":"","clientUid":"","clientClass":"","imageTempId":"","imageTempUrl":"","elementType":"Question","elementOrder":"","elementArributuesProp":[{"attributeId":"","attributeName":"","defaultValue":""}],"elementArributuesVal":[{"value1":"item1"}],"rule":[{"ruleId":"1","ruleName":"Mandatory","formula":"i>a","formulaData":"i>50","isDeleted":"","addAction":[{"actionId":"1","actionDescription":"","actionTag":"","actionOutput":"","actionOutputValue":"","numberOfFields":"","isDeleted":""}]}]}]}]}]}]}]}]}]}]}

我已经发布了同样的问题,但我没有收到任何答案。因此我再次这样做。

由于

0 个答案:

没有答案