gpt4 book ai didi

plsql - 如何在 PL/SQL 中创建枚举类型?

转载 作者:行者123 更新时间:2023-12-04 16:35:58 26 4
gpt4 key购买 nike

例如,我想创建自己的 bool 类型并将其命名为 Bool。我怎么做?

或者一种交通信号灯类型,即其中只有红色、黄色、绿色(当然是空的)。

最佳答案

我不认为 A.B.Cade 提供的解决方案是完全正确的。让我们假设程序是这样的:
procedure TestEnum(enum_in lights);enum_in的值是多少?红色的?黄色?绿色?

我提出了另一种解决方案。这是包示例

CREATE OR REPLACE PACKAGE pkg_test_enum IS

SUBTYPE TLight IS BINARY_INTEGER RANGE 0..2;
Red CONSTANT TLight := 0;
Yellow CONSTANT TLight := 1;
Green CONSTANT TLight := 2;

--get sting name for my "enum" type
FUNCTION GetLightValueName(enum_in TLight) RETURN VARCHAR2;

PROCEDURE EnumTest(enum_in TLight);

END pkg_test_enum;


CREATE OR REPLACE PACKAGE BODY pkg_test_enum IS
FUNCTION GetLightValueName(enum_in TLight)
RETURN VARCHAR2
IS
ResultValue VARCHAR2(6);
BEGIN
CASE enum_in
WHEN Red THEN ResultValue := 'Red';
WHEN Green THEN ResultValue := 'Green';
WHEN Yellow THEN ResultValue := 'Yellow';
ELSE ResultValue := '';
END CASE;
RETURN ResultValue;
END GetLightValueName;


PROCEDURE EnumTest(enum_in TLight)
IS
BEGIN
--do stuff
NULL;
END EnumTest;
END pkg_test_enum;

我现在可以使用 TLight在不同的包中。我现在可以测试 enum_in针对预定义的值或 null。

这是使用示例
begin
pkg_test_enum.EnumTest(pkg_test_enum.Red);
end;

此外,您可以使此类型不可为空。
SUBTYPE TLight IS BINARY_INTEGER RANGE 0..2 NOT NULL;

关于plsql - 如何在 PL/SQL 中创建枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com