如何在 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.

  1. Create a procedure display_disabled_triggers that displays a list of all disabled triggers in your schema.
  2. 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.

  1. 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;