|
gyc05t01rz49h 格式化,这样到底是开发写的,还是后台自动生成的代码.
DECLARE
p_owner VARCHAR (30) := wner;
p_object_name VARCHAR (30) := bject_name;
p_proc_name VARCHAR (30) := rocedure_name;
p_overload NUMBER := verload;
p_object_type VARCHAR (19);
p_count NUMBER;
BEGIN
IF p_owner IS NULL
THEN
BEGIN
SELECT /*+ RULE */
object_type, owner
INTO p_object_type, p_owner
FROM sys.all_objects
WHERE owner = SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA')
AND object_type IN
('PROCEDURE'
,'FUNCTION'
,'PACKAGE'
,'PACKAGE BODY'
,'SYNONYM')
AND object_name = p_object_name
AND ROWNUM <= 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT /*+ RULE */
object_type, owner
INTO p_object_type, p_owner
FROM sys.all_objects
WHERE owner = 'PUBLIC'
AND object_type IN
('PROCEDURE'
,'FUNCTION'
,'PACKAGE'
,'PACKAGE BODY'
,'SYNONYM')
AND object_name = p_object_name
AND ROWNUM <= 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF p_proc_name IS NOT NULL
THEN
p_owner := p_object_name;
p_object_name := p_proc_name;
p_proc_name := NULL;
ELSE
RAISE;
END IF;
END;
END;
END IF;
IF p_object_type IS NULL
THEN
SELECT /*+ RULE */
object_type
INTO p_object_type
FROM sys.all_objects
WHERE object_type IN
('PROCEDURE'
,'FUNCTION'
,'PACKAGE'
,'PACKAGE BODY'
,'SYNONYM')
AND owner = p_owner
AND object_name = p_object_name
AND ROWNUM <= 1;
END IF;
WHILE p_object_type = 'SYNONYM'
LOOP
SELECT /*+ RULE */
table_owner, table_name
INTO p_owner, p_object_name
FROM sys.all_synonyms
WHERE owner = p_owner AND synonym_name = p_object_name;
SELECT /*+ RULE */
object_type
INTO p_object_type
FROM sys.all_objects
WHERE owner = p_owner AND object_name = p_object_name AND ROWNUM <= 1;
END LOOP;
SELECT /*+ RULE */
COUNT (*)
INTO p_count
FROM sys.all_procedures
WHERE owner = p_owner
AND object_name = p_object_name
AND ( procedure_name = p_proc_name
OR p_proc_name IS NULL AND procedure_name IS NULL);
IF p_count < p_overload
THEN
RAISE NO_DATA_FOUND;
END IF;
wner := p_owner;
bject_name := p_object_name;
rocedure_name := p_proc_name;
SELECT /*+ RULE */
COUNT (*)
INTO aram_count
FROM sys.all_arguments
WHERE owner = p_owner
AND ( p_proc_name IS NULL
AND package_name IS NULL
AND object_name = p_object_name
OR p_proc_name IS NOT NULL
AND package_name = p_object_name
AND object_name = p_proc_name
AND NVL (overload, 1) = p_overload)
AND data_type IS NOT NULL;
END; |
|