如何在 Oracle 中将第一条记录的第一个字段填充到函数 return 中并带有合适的消息
How in Oracle populate the first field of the first record into function return with a suitable message
我正在尝试解决下面的任务,我在等待第二个提示。也许我理解错了,但如果语句中没有 return 值,他们想 return 记录消息。如何将转储值添加到我的 table 和 return 中呢?我应该使用带有多个 varchars 的类型吗(无论如何所有列都应该是 varchar)?我已经完成了一些编码,但真的不知道如何解决它。
任务:
Create a package called traveler_admin_package, which can be used to maintain the system.
- Create a procedure display_disabled_triggers that displays a list of all disabled triggers in your
schema.
- Create a function all_dependent_objects that returns all the dependent objects for a particular object.
• Pass OBJECT_NAME as an IN parameter and return an array that contains the NAME , TYPE,
REFERENCED_NAME AND REFERENCED_TYPE values.
Hints:
• Query the data dictionary and RETURN an associative array of records from the body of the
function.
• If a function returns an empty array, an ORA-06502 exception will be raised. Include code to
test whether the associative array contains at least one record; if it does not, populate the first
field of the first record with a suitable message.
- Create a procedure print_dependent_objects that displays the array of dependent objects returned by
the all_dependent_objects function.
我已经完成的代码:
create or replace package traveler_admin_package is
TYPE m_dependent is RECORD (
NAME USER_DEPENDENCIES.NAME%TYPE,
TYPE USER_DEPENDENCIES.TYPE%TYPE,
REFERENCED_NAME USER_DEPENDENCIES.REFERENCED_NAME%TYPE,
REFERENCED_TYPE USER_DEPENDENCIES.REFERENCED_TYPE%TYPE
);
Type m_return is table of m_dependent INDEX BY BINARY_INTEGER;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_return;
end traveler_admin_package;
create or replace package body traveler_admin_package is
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_return is
m_values m_return;
begin
SELECT NAME, TYPE, REFERENCED_NAME, REFERENCED_TYPE
INTO m_values
FROM USER_DEPENDENCIES
where REFERENCED_NAME = OBJECT_NAME;
return m_values;
end all_dependent_objects;
end traveler_admin_package;
我终于完成了代码。
create or replace package traveler_admin_package is
TYPE m_dependent is RECORD (
NAME USER_DEPENDENCIES.NAME%TYPE,
TYPE USER_DEPENDENCIES.TYPE%TYPE,
REFERENCED_NAME USER_DEPENDENCIES.REFERENCED_NAME%TYPE,
REFERENCED_TYPE USER_DEPENDENCIES.REFERENCED_TYPE%TYPE
);
TYPE m_depenent_table is table of m_dependent index by BINARY_INTEGER ;
PROCEDURE display_disabled_triggers;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_depenent_table;
PROCEDURE print_dependent_objects(p_Objects m_depenent_table);
end traveler_admin_package;
create or replace package body traveler_admin_package is
PROCEDURE display_disabled_triggers is
CURSOR c_trigger
IS
SELECT TRIGGER_NAME
FROM user_triggers
WHERE STATUS = 'DISABLED';
BEGIN
dbms_output.put_line('List of disabled triggers:');
FOR trigger IN c_trigger
LOOP
dbms_output.put_line(trigger.TRIGGER_NAME);
END LOOP;
END display_disabled_triggers;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_depenent_table is
m_return m_depenent_table;
begin
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
bulk collect
into m_return
FROM USER_DEPENDENCIES
where REFERENCED_NAME = OBJECT_NAME;
if sql%notfound then
m_return(1) := m_dependent('NO DEPENDENCIES FOUND', '', '', '');
end if;
return m_return;
end all_dependent_objects;
PROCEDURE print_dependent_objects(p_Objects m_depenent_table) is
begin
for i in p_Objects.first .. p_Objects.last
loop
dbms_output.put_line(
p_Objects(i).NAME || ' ' || p_Objects(i).TYPE || ' ' || p_Objects(i).REFERENCED_NAME ||
' ' || p_Objects(i).REFERENCED_TYPE);
end loop;
end print_dependent_objects;
end traveler_admin_package;
我正在尝试解决下面的任务,我在等待第二个提示。也许我理解错了,但如果语句中没有 return 值,他们想 return 记录消息。如何将转储值添加到我的 table 和 return 中呢?我应该使用带有多个 varchars 的类型吗(无论如何所有列都应该是 varchar)?我已经完成了一些编码,但真的不知道如何解决它。
任务:
Create a package called traveler_admin_package, which can be used to maintain the system.
- Create a procedure display_disabled_triggers that displays a list of all disabled triggers in your schema.
- Create a function all_dependent_objects that returns all the dependent objects for a particular object.
• Pass OBJECT_NAME as an IN parameter and return an array that contains the NAME , TYPE, REFERENCED_NAME AND REFERENCED_TYPE values.
Hints: • Query the data dictionary and RETURN an associative array of records from the body of the function.
• If a function returns an empty array, an ORA-06502 exception will be raised. Include code to test whether the associative array contains at least one record; if it does not, populate the first field of the first record with a suitable message.
- Create a procedure print_dependent_objects that displays the array of dependent objects returned by the all_dependent_objects function.
我已经完成的代码:
create or replace package traveler_admin_package is
TYPE m_dependent is RECORD (
NAME USER_DEPENDENCIES.NAME%TYPE,
TYPE USER_DEPENDENCIES.TYPE%TYPE,
REFERENCED_NAME USER_DEPENDENCIES.REFERENCED_NAME%TYPE,
REFERENCED_TYPE USER_DEPENDENCIES.REFERENCED_TYPE%TYPE
);
Type m_return is table of m_dependent INDEX BY BINARY_INTEGER;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_return;
end traveler_admin_package;
create or replace package body traveler_admin_package is
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_return is
m_values m_return;
begin
SELECT NAME, TYPE, REFERENCED_NAME, REFERENCED_TYPE
INTO m_values
FROM USER_DEPENDENCIES
where REFERENCED_NAME = OBJECT_NAME;
return m_values;
end all_dependent_objects;
end traveler_admin_package;
我终于完成了代码。
create or replace package traveler_admin_package is
TYPE m_dependent is RECORD (
NAME USER_DEPENDENCIES.NAME%TYPE,
TYPE USER_DEPENDENCIES.TYPE%TYPE,
REFERENCED_NAME USER_DEPENDENCIES.REFERENCED_NAME%TYPE,
REFERENCED_TYPE USER_DEPENDENCIES.REFERENCED_TYPE%TYPE
);
TYPE m_depenent_table is table of m_dependent index by BINARY_INTEGER ;
PROCEDURE display_disabled_triggers;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_depenent_table;
PROCEDURE print_dependent_objects(p_Objects m_depenent_table);
end traveler_admin_package;
create or replace package body traveler_admin_package is
PROCEDURE display_disabled_triggers is
CURSOR c_trigger
IS
SELECT TRIGGER_NAME
FROM user_triggers
WHERE STATUS = 'DISABLED';
BEGIN
dbms_output.put_line('List of disabled triggers:');
FOR trigger IN c_trigger
LOOP
dbms_output.put_line(trigger.TRIGGER_NAME);
END LOOP;
END display_disabled_triggers;
FUNCTION all_dependent_objects(OBJECT_NAME VARCHAR2) RETURN m_depenent_table is
m_return m_depenent_table;
begin
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
bulk collect
into m_return
FROM USER_DEPENDENCIES
where REFERENCED_NAME = OBJECT_NAME;
if sql%notfound then
m_return(1) := m_dependent('NO DEPENDENCIES FOUND', '', '', '');
end if;
return m_return;
end all_dependent_objects;
PROCEDURE print_dependent_objects(p_Objects m_depenent_table) is
begin
for i in p_Objects.first .. p_Objects.last
loop
dbms_output.put_line(
p_Objects(i).NAME || ' ' || p_Objects(i).TYPE || ' ' || p_Objects(i).REFERENCED_NAME ||
' ' || p_Objects(i).REFERENCED_TYPE);
end loop;
end print_dependent_objects;
end traveler_admin_package;