typeof 等价于 PL/SQL 中的对象类型

Posted

技术标签:

【中文标题】typeof 等价于 PL/SQL 中的对象类型【英文标题】:typeof Equivalent for Object Types in PL/SQL 【发布时间】:2013-01-22 20:02:41 【问题描述】:

我正在尝试在 Oracle 中使用 OOP 和 TDD。是的,我知道这听起来很疯狂。而且,我需要一些建议。

我正在为以下构造函数方法编写测试(为本问题的目的进行了简化):

CONSTRUCTOR FUNCTION PERSON(p_pidm NUMBER, p_throw_exception NUMBER DEFAULT 0, p_program_id NUMBER DEFAULT 0)
RETURN SELF AS RESULT IS

BEGIN

    -- Attach constructor parameters to internal attributes
    self.throw_exception := p_throw_exception;
    self.program_id := p_program_id;

    -- TESTING STUDENT INSTANTIATION
    self.student := NEW STUDENT(self.a_pidm);

    RETURN;
END;

在相应的测试中,我需要验证self.student 是否设置为STUDENT 的有效实例。在其他语言中,我使用 typeof 方法来执行此操作,但我不知道 PL/SQL 中有一个。

所以,问题是,有谁知道我可以将用户定义的类型传入并取回其类/类型名称的函数/过程?

谢谢。

【问题讨论】:

【参考方案1】:

您可能想使用IS OF <<type>> syntax。

类似

IF l_variable IS OF( student )
THEN
  <<do something>>
END IF;

【讨论】:

/#justin 这是完美的。谢谢。

以上是关于typeof 等价于 PL/SQL 中的对象类型的主要内容,如果未能解决你的问题,请参考以下文章

PL-SQL 包的创建和应用

PL/SQL 用表中的数据填充对象

在 PL/SQL 中创建动态对象

Oracle之PL/SQL编程_数据类型与定义变量和常量

PL/SQL 对象类型到 XML

Oracle PL/SQL 第五章–复合类型