--
prompt ******* Места хранения. Дополнительные характеристики
--
CREATE OR REPLACE function USIODLSTORELOCATIONSPROPS return DummyTypeHolder.TRefCursor
is
    vSQL varchar2(4000);
    vResult DummyTypeHolder.TRefCursor;
begin
    vSQL := 'select'||
      ' l.Name LocName'||
      ',p.Name PropName'||
      ',v.PropVal'||
      ' from SMStoreLocations l, SMStoreProperties v, SAStorePropDef p'||
      ' where l.Accepted=''1'' and v.StoreLoc=l.ID and v.PropID=p.ID'||
      ' order by l.Name,p.Name';
    open vResult for vSQL;
    return vResult;
end;
/

declare
 vID SAInfoObjects.ID%type := 'USIODLSTORELOCATIONSPROPS';
 vTitle SAInfoObjects.Title%type := 'Дикий Лось. Места хранения. Дополнительные характеристики';
begin
 update SAInfoObjects set Title = vTitle where ID = vID;
 if SQL%ROWCOUNT=0 then
    insert into SAInfoObjects(ID, Title) values(vID, vTitle);
 end if;
 delete from SMInfoObjectsColumn where ObjectID = vID;
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('LocName'),'Наименование места хранения',1,'1','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('PropName'),'Наименование характеристики',2,'1','VARCHAR2',50,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('PropVal'),'Значение характеристики',0,'1','VARCHAR2',4000,null);
 commit;
end;
/
