函数如何使用 oracle 中的集合返回第二个和第四个值?答案是 42 和 46
Posted
技术标签:
【中文标题】函数如何使用 oracle 中的集合返回第二个和第四个值?答案是 42 和 46【英文标题】:how function return 2nd and 4th value using collection in oracle? answer would be 42 and 46 【发布时间】:2018-03-13 15:29:33 【问题描述】:它将显示第 4 个收藏值。我想要第二和第四。
create or replace function temp_fun_2 return number as
TYPE t1 IS table of number;
emp_tab t1 ;
BEGIN
emp_tab := t1(12, 42, 39, 46, 57, 62, 11, 35, 98);
return emp_tab(4);
end;
/
【问题讨论】:
返回多个事物将需要使用 OUT 参数或返回具有多个成员的集合类型。 或将返回类型改为varchar2并返回emp_tab(2) || ',' || emp_tab(4) 返回一个逗号分隔的字符串,其中包含两个值。需要更多地了解您要实际实现的目标,才能知道哪种解决方案最适合您。 感谢您的回复。编译上述函数后。它使用“select (temp_fun_2) from dual;”返回输出“46”我想要输出 22 和 46。一个低于另一个。这意味着首先它将返回第二个集合值,然后返回第四个 【参考方案1】:从你的评论来看:
我想要输出 22 和 46。一个在另一个之下
(顺便说一句,它是42
而不是22
!)
我猜,您正在寻找Table functions
或Pipelined Table functions
所以,这应该可行:
CREATE TYPE t_row AS object (
id NUMBER
);
/
CREATE TYPE t_tab IS TABLE OF t_row;
/
create or replace function temp_fun_2 return t_tab PIPELINED as
TYPE t1 IS table of number;
emp_tab t1 ;
BEGIN
emp_tab := t1(12, 42, 39, 46, 57, 62, 11, 35, 98);
PIPE ROW(t_row(emp_tab(2)));
PIPE ROW(t_row(emp_tab(4)));
return;
end;
select * from table(temp_fun_2)
结果:
42
46
【讨论】:
你能解释一下“select (temp_fun_2) from dual;”之间的区别吗?和“从表中选择*(temp_fun_2)”以上是关于函数如何使用 oracle 中的集合返回第二个和第四个值?答案是 42 和 46的主要内容,如果未能解决你的问题,请参考以下文章
VC MFC下 定义 CString str 怎样获取str的第二个和第三字符(用啥函数)?
如何使用CHARINDEX和SUBSTRING在第二个和第三个“_”之间提取特定文本?
Swift:Spritekit 中的多个场景,从第二个和第一个场景的不同 Sprite 节点类型调用 touchesBegan