【问题标题】:PL-SQL - Can I pass enum as function argument?PL-SQL - 我可以将枚举作为函数参数传递吗?
【发布时间】:2020-06-09 07:07:10
【问题描述】:
我的表中有一个名为“type”的字段/列,其中枚举数据类型,我希望为我的 PL-SQL 函数使用类似类型的参数。
我可以将枚举作为函数参数传递吗?
我尝试了以下函数(对于 mySQL),但它确实接受枚举作为函数参数/参数。
CREATE FUNCTION `save_type` (type('new', 'existing', 'xyz') IN enum)
RETURNS INTEGER
BEGIN
RETURN 1;
END
【问题讨论】:
标签:
mysql
function
enums
parameter-passing
【解决方案1】:
您可以将 ENUM 类型用于函数参数,但您的 MySQL 语法错误。
这行得通:
CREATE FUNCTION `save_type` (type enum('new', 'existing', 'xyz'))
RETURNS INTEGER
DETERMINISTIC
BEGIN
RETURN 1;
END
区别:
- 列出
enum 关键字后面的枚举值。
- 对于 MySQL 存储函数,
IN 与 OUT 参数没有选项。
- 应使用
DETERMINISTIC、NO SQL 或READS SQL DATA 之一声明函数。
【解决方案2】:
函数参数必须是 MySQL 数据类型。不支持ENUM。
建议完全远离ENUM。为可读值使用单独的表格,以便您以后可以在需要时更改它们而无需大费周章。