代码之家  ›  专栏  ›  技术社区  ›  Adam Paynter

PL/SQL过程参数中的类泛型行为

  •  3
  • Adam Paynter  · 技术社区  · 15 年前

    TYPE foo_t IS RECORD (...);
    TYPE foo_table_t IS TABLE OF foo_t INDEX BY BINARY_INTEGER;
    
    TYPE bar_t IS RECORD (...);
    TYPE bar_table_t IS TABLE OF bar_t INDEX BY BINARY_INTEGER;
    

    我是否可以编写一个能够接受从表派生的任何数据类型的过程(例如 foo_table_t bar_table_t )作为参数?该过程不需要了解表的行类型。一个简单的例子:

    PROCEDURE remove_last(some_table ...) IS
    BEGIN
        some_table.DELETE(some_table.LAST);
    END;
    
    1 回复  |  直到 8 年前
        1
  •  7
  •   DCookie    15 年前

    不直接。从PL/SQL程序员指南中:

    “实际参数及其对应的形式参数必须具有兼容的数据类型。”

    PL/SQL将实际参数数据类型隐式转换为形式参数数据类型。因此,您可以将一个数值传递给需要字符串的过程,这将起作用,因为您可以进行隐式转换。

    通用程序(输入输出输出);

    通用程序(输入/输出栏);