gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / main / resources / org / gvsig / vcsgis / lib / Oracle.sql @ 6232
History | View | Annotate | Download (11.8 KB)
1 |
@begin createRepositoryIndex1
|
---|---|
2 |
create index idx_data_1 on VCSGISREPO_DATA (COD_ENTITY ASC, DAT_REVNUMBER ASC) |
3 |
@end createRepositoryIndex1
|
4 |
|
5 |
@begin createRepositoryIndex2
|
6 |
create index idx_data_2 on VCSGISREPO_DATA (DAT_FEATURERELATEDCODE ASC, DAT_REVNUMBER ASC, DAT_OPERATION ASC) |
7 |
@end createRepositoryIndex2
|
8 |
|
9 |
@begin getDataOfEntityFromRevisionNumber
|
10 |
select * from "VCSGISREPO_DATA" where |
11 |
"VCSGISREPO_DATA"."COD_ENTITY" = '%2$s' AND |
12 |
"VCSGISREPO_DATA"."COD_DATA" in ( |
13 |
select
|
14 |
MIN("VCSGISREPO_DATA1"."COD_DATA") |
15 |
from "VCSGISREPO_DATA" "VCSGISREPO_DATA1" |
16 |
left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on |
17 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
18 |
and "VCSGISREPO_DATA2"."DAT_REVNUMBER" > %1$d |
19 |
where
|
20 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%2$s' |
21 |
and "VCSGISREPO_DATA1"."DAT_REVNUMBER" > %1$d |
22 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION" |
23 |
having not ( |
24 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MAX("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 ) |
25 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 ) |
26 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 )) |
27 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") <> 0 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
28 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
29 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) ) |
30 |
) |
31 |
order by "VCSGISREPO_DATA"."DAT_OPERATION" desc |
32 |
@end getDataOfEntityFromRevisionNumber
|
33 |
|
34 |
@begin getDataOfEntityToRevisionNumber
|
35 |
select * from "VCSGISREPO_DATA" where |
36 |
"VCSGISREPO_DATA"."COD_ENTITY" = '%2$s' AND |
37 |
"VCSGISREPO_DATA"."COD_DATA" in ( |
38 |
select
|
39 |
MIN("VCSGISREPO_DATA1"."COD_DATA") |
40 |
from "VCSGISREPO_DATA" "VCSGISREPO_DATA1" |
41 |
left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on |
42 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
43 |
and "VCSGISREPO_DATA2"."DAT_REVNUMBER" <= %1$d |
44 |
where
|
45 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%2$s' |
46 |
and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <= %1$d |
47 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION" |
48 |
having not ( |
49 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MAX("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 ) |
50 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 ) |
51 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 )) |
52 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") <> 0 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
53 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
54 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) ) |
55 |
) |
56 |
order by "VCSGISREPO_DATA"."DAT_OPERATION" desc |
57 |
@end getDataOfEntityToRevisionNumber
|
58 |
|
59 |
@begin getDataOfEntityFromEfectiveDate
|
60 |
select * from "VCSGISREPO_DATA" where |
61 |
"VCSGISREPO_DATA"."COD_ENTITY" = '%1$s' AND |
62 |
"VCSGISREPO_DATA"."COD_DATA" in ( |
63 |
select
|
64 |
MIN("VCSGISREPO_DATA1"."COD_DATA") |
65 |
from "VCSGISREPO_DATA" "VCSGISREPO_DATA1" |
66 |
left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on |
67 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
68 |
and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
69 |
where
|
70 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s' |
71 |
and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
72 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION" |
73 |
having not ( |
74 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 ) |
75 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 ) |
76 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 )) |
77 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
78 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) ) |
79 |
) |
80 |
|
81 |
@end getDataOfEntityFromEfectiveDate
|
82 |
|
83 |
@begin getDataOfEntityFromEfectiveDateAndRoi
|
84 |
select * from "VCSGISREPO_DATA" where |
85 |
"VCSGISREPO_DATA"."COD_ENTITY" = '%1$s' AND |
86 |
"VCSGISREPO_DATA"."COD_DATA" in ( |
87 |
select
|
88 |
MIN("VCSGISREPO_DATA1"."COD_DATA") |
89 |
from "VCSGISREPO_DATA" "VCSGISREPO_DATA1" |
90 |
left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on |
91 |
"VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE" |
92 |
and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
93 |
where
|
94 |
"VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s' |
95 |
and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') |
96 |
and ("VCSGISREPO_DATA1"."DAT_GEOM" is null or (ST_Intersects("VCSGISREPO_DATA1"."DAT_GEOM",SDO_GEOMETRY(HEXTORAW('%3$s'), %4$s) )) ) |
97 |
group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION" |
98 |
having not ( |
99 |
("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 ) |
100 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 ) |
101 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 )) |
102 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) |
103 |
or ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER")) ) |
104 |
) |
105 |
@end getDataOfEntityFromEfectiveDateAndRoi
|
106 |
|
107 |
|
108 |
@begin dateFormat
|
109 |
yyyy-MM-dd HH:mm:ss |
110 |
@end dateFormat
|
111 |
|
112 |
@begin createWorkspaceIndex1
|
113 |
create index idx_wschanges_1 on VCSGIS_WSCHANGES (COD_ENTITY ASC, WSCH_OPERATION DESC, COD_WSCHANGE ASC) |
114 |
@end createWorkspaceIndex1
|
115 |
|
116 |
@begin createWorkspaceIndex2
|
117 |
create index idx_wschanges_2 on VCSGIS_WSCHANGES (WSCH_SELECTED ASC, WSCH_OPERATION ASC) |
118 |
@end createWorkspaceIndex2
|
119 |
|
120 |
@begin createWorkspaceIndex3
|
121 |
create index idx_remotechanges_3 on VCSGIS_REMOTECHANGES (COD_ENTITY ASC, RCH_SELECTED ASC) |
122 |
@end createWorkspaceIndex3
|
123 |
|
124 |
@begin updateStateFromLocalChanges
|
125 |
-- status
|
126 |
update VCSGIS_REMOTECHANGES
|
127 |
set RCH_STATUS = %1$d |
128 |
where exists (select 1 from VCSGIS_WSCHANGES where RCH_DATACODE = WSCH_FEATURECODE FETCH FIRST 1 ROWS ONLY;) |
129 |
@end updateStateFromLocalChanges
|
130 |
|
131 |
@begin removeLocalChangesRelatedToSelectedRemoteChanges
|
132 |
-- entityCode
|
133 |
delete from VCSGIS_WSCHANGES |
134 |
where COD_ENTITY = '%1$s' and WSCH_FEATURECODE in ( |
135 |
select RCH_DATACODE from VCSGIS_REMOTECHANGES where RCH_DATACODE = WSCH_FEATURECODE and CAST(RCH_SELECTED as INT)=1) |
136 |
@end removeLocalChangesRelatedToSelectedRemoteChanges
|
137 |
|
138 |
@begin getChangesWidthUserData
|
139 |
-- EntityName
|
140 |
-- FeatureIdFieldName (VCSGISCODE)
|
141 |
-- RelatedFeatureCode
|
142 |
-- filter
|
143 |
SELECT * FROM VCSGIS_WSCHANGES left join "%1$s" on WSCH_FEATURECODE = "%2$s" WHERE "%2$s" <> '%3$s' AND (%4$s) |
144 |
@end getChangesWidthUserData
|
145 |
|
146 |
|
147 |
|
148 |
@begin alterTableAddColumnVCSGISCODE
|
149 |
-- EntityName
|
150 |
ALTER TABLE "%1$s" ADD COLUMN "VCSGISCODE" VARCHAR(40) |
151 |
@end alterTableAddColumnVCSGISCODE
|
152 |
|
153 |
@begin alterTableDropPrimaryKey
|
154 |
-- EntityName
|
155 |
ALTER TABLE "%1$s" DROP PRIMARY KEY |
156 |
@end alterTableDropPrimaryKey
|
157 |
|
158 |
@begin alterTableAlterColumnVCSGISCODESetNotNull
|
159 |
-- EntityName
|
160 |
ALTER TABLE "%1$s" ALTER COLUMN "VCSGISCODE" SET NOT NULL |
161 |
@end alterTableAlterColumnVCSGISCODESetNotNull
|
162 |
|
163 |
@begin alterTableAddPrimaryKeyVCSGISCODE
|
164 |
-- EntityName
|
165 |
ALTER TABLE "%1$s" ADD PRIMARY KEY ("VCSGISCODE") |
166 |
@end alterTableAddPrimaryKeyVCSGISCODE
|
167 |
|
168 |
@begin createFunctionsPre1
|
169 |
create or replace PACKAGE VCSGISPKG AS |
170 |
TYPE VCSGISREPO_DATA_ROWTYPE IS RECORD (
|
171 |
COD_DATA NVARCHAR2(60)
|
172 |
, COD_REVISION NVARCHAR2(60)
|
173 |
, COD_ENTITY NVARCHAR2(60)
|
174 |
, DAT_OPERATION NUMBER(9, 0) |
175 |
, DAT_REVNUMBER NUMBER(18, 0) |
176 |
, DAT_EFECTIVEDATE TIMESTAMP(6) |
177 |
, DAT_FEATURERELATEDCODE NVARCHAR2(60)
|
178 |
, DAT_GEOM SDO_GEOMETRY |
179 |
, DAT_DATA NCLOB |
180 |
); |
181 |
TYPE VCSGISREPO_DATA_TYPE IS TABLE OF VCSGISREPO_DATA_ROWTYPE; |
182 |
|
183 |
FUNCTION CHECKOUT(PCOD_ENTITY IN VARCHAR2, PDAT_REVNUMBER IN LONG) RETURN VCSGISREPO_DATA_TYPE PIPELINED; |
184 |
END VCSGISPKG;
|
185 |
@end createFunctionsPre1
|
186 |
|
187 |
@begin createFunctionsPost1
|
188 |
create or replace PACKAGE BODY VCSGISPKG AS |
189 |
TYPE MAP_VARCHAR_NUMBER IS TABLE OF NUMBER INDEX BY VARCHAR2(64); |
190 |
|
191 |
FUNCTION CHECKOUT(PCOD_ENTITY IN VARCHAR2, PDAT_REVNUMBER IN LONG) |
192 |
RETURN VCSGISREPO_DATA_TYPE
|
193 |
PIPELINED |
194 |
IS
|
195 |
CURSOR C1 IS
|
196 |
SELECT *
|
197 |
FROM VCSGISREPO_DATA
|
198 |
WHERE COD_ENTITY = PCOD_ENTITY AND DAT_REVNUMBER <= PDAT_REVNUMBER |
199 |
ORDER BY DAT_REVNUMBER DESC |
200 |
; |
201 |
|
202 |
DELETEDS MAP_VARCHAR_NUMBER; |
203 |
UPDATEDS_AND_INSERTEDS MAP_VARCHAR_NUMBER; |
204 |
VCOD_DATA VCSGISREPO_DATA.COD_DATA%TYPE; |
205 |
VDAT_FEATURERELATEDCODE VCSGISREPO_DATA.DAT_FEATURERELATEDCODE%TYPE; |
206 |
VDAT_OPERATION VCSGISREPO_DATA.DAT_OPERATION%TYPE; |
207 |
|
208 |
BEGIN
|
209 |
FOR record IN C1 |
210 |
LOOP |
211 |
-- VCOD_DATA := record.COD_DATA;
|
212 |
VDAT_FEATURERELATEDCODE := record.DAT_FEATURERELATEDCODE; |
213 |
VDAT_OPERATION := record.DAT_OPERATION; |
214 |
|
215 |
IF DELETEDS.EXISTS(VDAT_FEATURERELATEDCODE) THEN |
216 |
CONTINUE; |
217 |
END IF; |
218 |
IF UPDATEDS_AND_INSERTEDS.EXISTS(VDAT_FEATURERELATEDCODE) THEN |
219 |
CONTINUE; |
220 |
END IF; |
221 |
IF VDAT_OPERATION = 0 THEN -- DEL |
222 |
DELETEDS(VDAT_FEATURERELATEDCODE) := 1;
|
223 |
CONTINUE; |
224 |
ELSIF VDAT_OPERATION = 1 THEN -- UPD |
225 |
UPDATEDS_AND_INSERTEDS(VDAT_FEATURERELATEDCODE) := 1;
|
226 |
ELSIF VDAT_OPERATION = 2 THEN -- INS |
227 |
UPDATEDS_AND_INSERTEDS(VDAT_FEATURERELATEDCODE) := 1;
|
228 |
END IF; |
229 |
|
230 |
PIPE ROW (record);
|
231 |
END LOOP;
|
232 |
END;
|
233 |
END;
|
234 |
@end createFunctionsPost1
|
235 |
|
236 |
@begin getDataOfEntityToRevisionNumberUsingDatabaseFunction
|
237 |
SELECT * FROM TABLE (VCSGISPKG.CHECKOUT('%2$s', %1$s)) |
238 |
@end getDataOfEntityToRevisionNumberUsingDatabaseFunction
|
239 |
|
240 |
@begin defaultCheckoutMode
|
241 |
USEDBFUNCTION (posible values USEDBFUNCTION, USESELECT, USEAPPFILTER)
|
242 |
@end defaultCheckoutMode
|