| 221 |
vnguyen |
1 |
CREATE PACKAGE BODY "RELEASE_MANAGER"."RM_ISSUES" AS
|
|
|
2 |
|
|
|
3 |
-- Private Implementation -----------------------------------------------------
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
|
|
|
7 |
AS
|
|
|
8 |
|
|
|
9 |
BEGIN
|
|
|
10 |
-- start boundary case
|
|
|
11 |
IF ( XXstart < XX ) THEN
|
|
|
12 |
RETURN 1;
|
|
|
13 |
|
|
|
14 |
ELSIF ( XXstart = XX ) THEN
|
|
|
15 |
|
|
|
16 |
-- need to consider YY
|
|
|
17 |
IF ( YYstart < YY ) THEN
|
|
|
18 |
RETURN 1;
|
|
|
19 |
|
|
|
20 |
ELSIF ( YYstart = YY ) THEN
|
|
|
21 |
|
|
|
22 |
-- need to consider ZZ
|
|
|
23 |
IF ( ZZstart <= ZZ ) THEN
|
|
|
24 |
RETURN 1;
|
|
|
25 |
|
|
|
26 |
ELSE
|
|
|
27 |
RETURN 0;
|
|
|
28 |
END IF;
|
|
|
29 |
|
|
|
30 |
ELSE
|
|
|
31 |
RETURN 0;
|
|
|
32 |
END IF;
|
|
|
33 |
ELSE
|
|
|
34 |
RETURN 0;
|
|
|
35 |
END IF;
|
|
|
36 |
EXCEPTION
|
|
|
37 |
WHEN OTHERS THEN
|
|
|
38 |
RETURN -1;
|
|
|
39 |
END;
|
|
|
40 |
|
|
|
41 |
|
|
|
42 |
FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
|
|
|
43 |
AS
|
|
|
44 |
|
|
|
45 |
BEGIN
|
|
|
46 |
-- end boundary case
|
|
|
47 |
IF ( XX < XXend ) THEN
|
|
|
48 |
RETURN 1;
|
|
|
49 |
|
|
|
50 |
ELSIF ( XX = XXend ) THEN
|
|
|
51 |
|
|
|
52 |
-- need to consider YY
|
|
|
53 |
IF ( YY < YYend ) THEN
|
|
|
54 |
RETURN 1;
|
|
|
55 |
|
|
|
56 |
ELSIF ( YY = YYend ) THEN
|
|
|
57 |
|
|
|
58 |
-- need to consider ZZ
|
|
|
59 |
IF ( ZZ <= ZZend ) THEN
|
|
|
60 |
RETURN 1;
|
|
|
61 |
|
|
|
62 |
ELSE
|
|
|
63 |
RETURN 0;
|
|
|
64 |
END IF;
|
|
|
65 |
ELSE
|
|
|
66 |
|
|
|
67 |
RETURN 0;
|
|
|
68 |
END IF;
|
|
|
69 |
ELSE
|
|
|
70 |
RETURN 0;
|
|
|
71 |
END IF;
|
|
|
72 |
EXCEPTION
|
|
|
73 |
WHEN OTHERS THEN
|
|
|
74 |
RETURN -1;
|
|
|
75 |
END;
|
|
|
76 |
|
|
|
77 |
/*
|
|
|
78 |
- version format: XX.YY.ZZ.abc
|
|
|
79 |
*/
|
|
|
80 |
FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
|
|
|
81 |
AS
|
|
|
82 |
XXstart NUMBER := 0;
|
|
|
83 |
XXend NUMBER := 0;
|
|
|
84 |
XX NUMBER := 0;
|
|
|
85 |
YYstart NUMBER := 0;
|
|
|
86 |
YYend NUMBER := 0;
|
|
|
87 |
YY NUMBER := 0;
|
|
|
88 |
ZZstart NUMBER := 0;
|
|
|
89 |
ZZend NUMBER := 0;
|
|
|
90 |
ZZ NUMBER := 0;
|
|
|
91 |
first_dot NUMBER := 0;
|
|
|
92 |
second_dot NUMBER := 0;
|
|
|
93 |
third_dot NUMBER := 0;
|
|
|
94 |
|
|
|
95 |
ProjExtstart VARCHAR2(10);
|
|
|
96 |
ProjExtend VARCHAR2(10);
|
|
|
97 |
ProjExt VARCHAR2(10);
|
|
|
98 |
|
|
|
99 |
BEGIN
|
|
|
100 |
-- strip the version number
|
|
|
101 |
first_dot := INSTR(version_start, '.', 1, 1);
|
|
|
102 |
second_dot := INSTR(version_start, '.', 1, 2);
|
|
|
103 |
third_dot := INSTR(version_start, '.', 1, 3);
|
|
|
104 |
|
|
|
105 |
XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
|
|
|
106 |
YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
|
|
|
107 |
ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
|
|
|
108 |
ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
|
|
|
109 |
|
|
|
110 |
first_dot := INSTR(version_end, '.', 1, 1);
|
|
|
111 |
second_dot := INSTR(version_end, '.', 1, 2);
|
|
|
112 |
third_dot := INSTR(version_end, '.', 1, 3);
|
|
|
113 |
|
|
|
114 |
XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
|
|
|
115 |
YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
|
|
|
116 |
ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
|
|
|
117 |
ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
|
|
|
118 |
|
|
|
119 |
first_dot := INSTR(version, '.', 1, 1);
|
|
|
120 |
second_dot := INSTR(version, '.', 1, 2);
|
|
|
121 |
third_dot := INSTR(version, '.', 1, 3);
|
|
|
122 |
|
|
|
123 |
XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
|
|
|
124 |
YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
|
|
|
125 |
ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
|
|
|
126 |
ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
|
|
|
127 |
|
|
|
128 |
-- only include versions if all project extensions are the same
|
|
|
129 |
IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
|
|
|
130 |
|
|
|
131 |
IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
|
|
|
132 |
RETURN 1;
|
|
|
133 |
ELSE
|
|
|
134 |
RETURN 0;
|
|
|
135 |
END IF;
|
|
|
136 |
ELSE
|
|
|
137 |
RETURN 0;
|
|
|
138 |
END IF;
|
|
|
139 |
|
|
|
140 |
EXCEPTION
|
|
|
141 |
WHEN OTHERS THEN
|
|
|
142 |
RETURN -1;
|
|
|
143 |
END;
|
|
|
144 |
|
|
|
145 |
FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
|
|
|
146 |
AS
|
|
|
147 |
pkg_id NUMBER;
|
|
|
148 |
BEGIN
|
|
|
149 |
SELECT
|
|
|
150 |
p.PKG_ID
|
|
|
151 |
INTO
|
|
|
152 |
pkg_id
|
|
|
153 |
FROM
|
|
|
154 |
PACKAGES p
|
|
|
155 |
WHERE
|
|
|
156 |
p.PKG_NAME = pkgName;
|
|
|
157 |
|
|
|
158 |
RETURN pkg_id;
|
|
|
159 |
EXCEPTION
|
|
|
160 |
WHEN OTHERS THEN
|
|
|
161 |
dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
|
|
|
162 |
RETURN -1;
|
|
|
163 |
END;
|
|
|
164 |
|
|
|
165 |
|
|
|
166 |
-- Public Implementation ------------------------------------------------------
|
|
|
167 |
|
|
|
168 |
/*
|
|
|
169 |
-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
|
|
|
170 |
--
|
|
|
171 |
-- INPUT PARAMETERS:
|
|
|
172 |
--
|
|
|
173 |
-- pkg_name - The name of the top level package to get issues for
|
|
|
174 |
-- version_start - The start version for the comparison
|
|
|
175 |
-- version_end - The end version for the comparison
|
|
|
176 |
*/
|
|
|
177 |
PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
|
|
|
178 |
AS
|
|
|
179 |
pkgId NUMBER;
|
|
|
180 |
BEGIN
|
|
|
181 |
-- get pkg_id of the input package:
|
|
|
182 |
pkgId := GetPkgId( pkg_name );
|
|
|
183 |
|
|
|
184 |
OPEN vCursor FOR
|
|
|
185 |
SELECT
|
|
|
186 |
pv.PKG_ID,
|
|
|
187 |
pv.PKG_VERSION,
|
|
|
188 |
pv.PV_ID,
|
|
|
189 |
i_pkg.ISS_ID,
|
|
|
190 |
( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
|
|
|
191 |
pd.DPKG_ID,
|
|
|
192 |
( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
|
|
|
193 |
pd.DPV_ID,
|
|
|
194 |
i_dpkg.ISS_ID AS ISSUE_ID
|
|
|
195 |
FROM
|
|
|
196 |
PACKAGE_VERSIONS pv
|
|
|
197 |
LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
|
|
|
198 |
LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
|
|
|
199 |
LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
|
|
|
200 |
WHERE
|
|
|
201 |
pv.PKG_ID = pkgId
|
|
|
202 |
AND
|
|
|
203 |
VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
|
|
|
204 |
AND
|
|
|
205 |
( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
|
|
|
206 |
ORDER BY
|
|
|
207 |
pv.PKG_ID,
|
|
|
208 |
pv.PV_ID,
|
|
|
209 |
pd.DPKG_ID,
|
|
|
210 |
pd.DPV_ID;
|
|
|
211 |
EXCEPTION
|
|
|
212 |
WHEN OTHERS THEN
|
|
|
213 |
dbms_output.put_line('AllIssues exception: ' || SQLERRM );
|
|
|
214 |
END;
|
|
|
215 |
|
|
|
216 |
|
|
|
217 |
-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
|
|
|
218 |
|
|
|
219 |
/*
|
|
|
220 |
-- Proc: LoadIssuesTable
|
|
|
221 |
--
|
|
|
222 |
-- Populates Package_Issues table with details of issues from all dependent packages.
|
|
|
223 |
-- This will be for all package versions of the input pkg_name between the
|
|
|
224 |
-- version_start and version_end.
|
|
|
225 |
--
|
|
|
226 |
-- INPUT PARAMETERS:
|
|
|
227 |
--
|
|
|
228 |
-- pkg_name - The name of the top level package to get issues for
|
|
|
229 |
-- version_start - The start version for the comparison
|
|
|
230 |
-- version_end - The end version for the comparison
|
|
|
231 |
*/
|
|
|
232 |
PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
|
|
|
233 |
AS
|
|
|
234 |
pkgId NUMBER;
|
|
|
235 |
|
|
|
236 |
CURSOR pack_vers_cur IS
|
|
|
237 |
SELECT
|
|
|
238 |
pv.PV_ID,
|
|
|
239 |
pv.PKG_VERSION,
|
|
|
240 |
pv.PKG_ID,
|
|
|
241 |
p.PKG_NAME
|
|
|
242 |
FROM
|
|
|
243 |
PACKAGE_VERSIONS pv
|
|
|
244 |
JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
|
|
|
245 |
WHERE
|
|
|
246 |
pv.PKG_ID = pkgId
|
|
|
247 |
AND
|
|
|
248 |
VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
|
|
|
249 |
|
|
|
250 |
BEGIN
|
|
|
251 |
DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
|
|
|
252 |
|
|
|
253 |
-- get the pkg_id we are finding issues for
|
|
|
254 |
pkgId := GetPkgId( pkg_name );
|
|
|
255 |
|
|
|
256 |
-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
|
|
|
257 |
FOR pack_ver_rec IN pack_vers_cur
|
|
|
258 |
LOOP
|
|
|
259 |
InsertIssuesForDepends( pack_ver_rec.PV_ID, pack_ver_rec.PKG_ID, pack_ver_rec.PKG_NAME, pack_ver_rec.PV_ID, pack_ver_rec.PKG_VERSION );
|
|
|
260 |
COMMIT;
|
|
|
261 |
END LOOP;
|
|
|
262 |
|
|
|
263 |
-- The output cursor - shows the individual versions of the top level package then were reported on
|
|
|
264 |
OPEN vCursor FOR
|
|
|
265 |
SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
|
|
|
266 |
/*removed
|
|
|
267 |
SELECT
|
|
|
268 |
PKG_VERSION
|
|
|
269 |
FROM
|
|
|
270 |
RELEASE_MANAGER.RM_PACKAGE_ISSUES;
|
|
|
271 |
*/
|
|
|
272 |
|
|
|
273 |
|
|
|
274 |
EXCEPTION
|
|
|
275 |
WHEN OTHERS THEN
|
|
|
276 |
dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
|
|
|
277 |
END;
|
|
|
278 |
|
|
|
279 |
|
|
|
280 |
/*
|
|
|
281 |
-- Proc: InsertIssuesForDepends
|
|
|
282 |
--
|
|
|
283 |
-- Used by LoadIssuesTable to recursively find issues for all dependent packages
|
|
|
284 |
--
|
|
|
285 |
-- INPUT PARAMETERS:
|
|
|
286 |
--
|
|
|
287 |
-- pvID - The package version id of the package to get issues for
|
|
|
288 |
-- top_pkgID - The package id of the top level package to get issues for - should be the same as pvID when called from LoadIssuesTable (different when called recursively)
|
|
|
289 |
-- top_pkgName - The package name of the top level package
|
|
|
290 |
-- top_pvID - The package version id of the top level package
|
|
|
291 |
-- top_pkgVer - The package version description of the top level package
|
|
|
292 |
*/
|
|
|
293 |
PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER,
|
|
|
294 |
top_pkgVer IN VARCHAR2 )
|
|
|
295 |
AS
|
|
|
296 |
pkgId NUMBER;
|
|
|
297 |
issCnt NUMBER := 0;
|
|
|
298 |
pkgCheck NUMBER := 0;
|
|
|
299 |
depCheck NUMBER := 0;
|
|
|
300 |
|
|
|
301 |
dpkgName VARCHAR(50);
|
|
|
302 |
dpkgVersion VARCHAR(50);
|
|
|
303 |
|
|
|
304 |
CURSOR dep_packs_cur IS
|
|
|
305 |
SELECT
|
|
|
306 |
DPV_ID
|
|
|
307 |
FROM
|
|
|
308 |
PACKAGE_DEPENDENCIES
|
|
|
309 |
WHERE
|
|
|
310 |
PV_ID = pvID;
|
|
|
311 |
|
|
|
312 |
BEGIN
|
|
|
313 |
|
|
|
314 |
-- check to see if the package has been processed previously
|
|
|
315 |
SELECT
|
|
|
316 |
COUNT(*)
|
|
|
317 |
INTO
|
|
|
318 |
pkgCheck
|
|
|
319 |
FROM
|
|
|
320 |
RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
|
|
|
321 |
WHERE
|
|
|
322 |
DPV_ID = pvID;
|
|
|
323 |
|
|
|
324 |
dbms_output.put_line('pkgCheck: ' || pkgCheck );
|
|
|
325 |
|
|
|
326 |
-- Package not already processed (no cyclic dependency) - process it
|
|
|
327 |
IF ( pkgCheck = 0 ) THEN
|
|
|
328 |
|
|
|
329 |
-- check to see if this package version has any issues assigned to it
|
|
|
330 |
SELECT
|
|
|
331 |
COUNT(*)
|
|
|
332 |
INTO
|
|
|
333 |
issCnt
|
|
|
334 |
FROM
|
|
|
335 |
CQ_ISSUES i
|
|
|
336 |
WHERE
|
|
|
337 |
i.PV_ID = pvID;
|
|
|
338 |
|
|
|
339 |
dbms_output.put_line('issCnt: ' || issCnt );
|
|
|
340 |
|
|
|
341 |
-- Always enter a marker row into the table even if there are no issues for the package.
|
|
|
342 |
-- This allows us to pick up any cyclic dependencies.
|
|
|
343 |
IF ( issCnt > 0 ) THEN
|
|
|
344 |
-- get issues and insert into RM_PACKAGE_ISSUES
|
|
|
345 |
/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
|
|
|
346 |
|
|
|
347 |
INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
|
|
|
348 |
SELECT DISTINCT
|
|
|
349 |
top_pkgID AS PKG_ID,
|
|
|
350 |
top_pkgName AS PKG_NAME,
|
|
|
351 |
top_pvID AS PV_ID,
|
|
|
352 |
top_pkgVer AS PKG_VERSION,
|
|
|
353 |
pv.PV_ID AS DPV_ID,
|
|
|
354 |
p.PKG_NAME AS DPKG_NAME,
|
|
|
355 |
pv.PKG_VERSION AS DPKG_VERSION,
|
|
|
356 |
ci.ISS_DB,
|
|
|
357 |
ci.ISS_ID
|
|
|
358 |
FROM
|
|
|
359 |
PACKAGE_VERSIONS pv
|
|
|
360 |
JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
|
|
|
361 |
JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
|
|
|
362 |
WHERE
|
|
|
363 |
pv.PV_ID = pvID;
|
|
|
364 |
|
|
|
365 |
ELSE
|
|
|
366 |
-- get the dpkg details - there will always be a row returned here
|
|
|
367 |
SELECT
|
|
|
368 |
p.PKG_NAME
|
|
|
369 |
INTO
|
|
|
370 |
dpkgName
|
|
|
371 |
FROM
|
|
|
372 |
PACKAGE_VERSIONS pv
|
|
|
373 |
JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
|
|
|
374 |
WHERE
|
|
|
375 |
pv.PV_ID = pvID;
|
|
|
376 |
|
|
|
377 |
SELECT
|
|
|
378 |
pv.PKG_VERSION
|
|
|
379 |
INTO
|
|
|
380 |
dpkgVersion
|
|
|
381 |
FROM
|
|
|
382 |
PACKAGE_VERSIONS pv
|
|
|
383 |
WHERE
|
|
|
384 |
pv.PV_ID = pvID;
|
|
|
385 |
|
|
|
386 |
-- enter a marker row
|
|
|
387 |
/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
|
|
|
388 |
INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
|
|
|
389 |
VALUES (
|
|
|
390 |
top_pkgID,
|
|
|
391 |
top_pkgName,
|
|
|
392 |
top_pvID,
|
|
|
393 |
top_pkgVer,
|
|
|
394 |
pvID,
|
|
|
395 |
dpkgName,
|
|
|
396 |
dpkgVersion,
|
|
|
397 |
NULL,
|
|
|
398 |
NULL );
|
|
|
399 |
|
|
|
400 |
END IF;
|
|
|
401 |
|
|
|
402 |
-- If this package version has dependencies then recurse
|
|
|
403 |
SELECT
|
|
|
404 |
COUNT(*)
|
|
|
405 |
INTO
|
|
|
406 |
depCheck
|
|
|
407 |
FROM
|
|
|
408 |
PACKAGE_DEPENDENCIES
|
|
|
409 |
WHERE
|
|
|
410 |
PV_ID = pvID;
|
|
|
411 |
|
|
|
412 |
IF ( depCheck > 0 ) THEN
|
|
|
413 |
-- get dependencies and call this function recursively for each one
|
|
|
414 |
FOR dep_rec IN dep_packs_cur
|
|
|
415 |
LOOP
|
|
|
416 |
InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
|
|
|
417 |
END LOOP;
|
|
|
418 |
|
|
|
419 |
END IF;
|
|
|
420 |
|
|
|
421 |
END IF;
|
|
|
422 |
|
|
|
423 |
/*EXCEPTION
|
|
|
424 |
WHEN OTHERS THEN
|
|
|
425 |
no exception handling required
|
|
|
426 |
*/
|
|
|
427 |
END;
|
|
|
428 |
|
|
|
429 |
END Rm_Issues;
|
|
|
430 |
/
|
|
|
431 |
ALTER PACKAGE "RELEASE_MANAGER"."RM_ISSUES"
|
|
|
432 |
COMPILE BODY
|
|
|
433 |
PLSQL_OPTIMIZE_LEVEL= 2
|
|
|
434 |
PLSQL_CODE_TYPE= INTERPRETED
|
|
|
435 |
PLSQL_DEBUG= FALSE
|
|
|
436 |
REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:46'
|
|
|
437 |
/
|