首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PL/SQL过程参数中类似泛型的行为

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

Stack Overflow用户
提问于 2009-05-08 14:25:40
回答 1查看 3.1K关注 0票数 4

假设我在PL/SQL中定义了一些数据类型:

代码语言:javascript
复制
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)作为参数的过程?该过程不需要了解表的行类型。一个简单的例子:

代码语言:javascript
复制
PROCEDURE remove_last(some_table ...) IS
BEGIN
    some_table.DELETE(some_table.LAST);
END;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-08 16:11:08

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

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

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

你能做的最好的就是编写重载的过程:

过程通用(Foo IN OUT foo_t);

过程通用(Bar IN OUT bar_t);

然后,您可以使用任一记录类型调用generic。这与要处理的记录类型的数量成比例地失去了吸引力:-D

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/840040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档