在PL / SQL过程的参数一般般的行为
题
假设我有在PL / SQL定义了一些数据类型:
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;
解决方案
不直接。从PL / SQL程序员指南:
“实际的参数和其相应的形式参数必须具有兼容的数据类型。”
PL / SQL不实际参数数据类型到形式参数的数据类型的隐式转换。所以,你可以一个数值传递给想要一个字符串的程序,它会工作,因为你可以做一个隐式转换。
你能做的最好是写程序超载:
PROCEDURE通用的(FOO IN OUT foo_t);
PROCEDURE通用(巴IN OUT bar_t);
然后就可以调用通用与任何记录类型。此失去吸引力正比于记录类型的数目来处理:-D
不隶属于 StackOverflow