您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何从Oracle中的clarify / begin / end块返回行?

如何从Oracle中的clarify / begin / end块返回行?

像您显示的那样,匿名PL / sql块无法“返回”任何内容。但是,它可以通过绑定变量与调用方进行交互。

因此,在这种情况下,我将使用的方法是声明一个游标引用,在PL / sql块中为所需的查询打开它,然后让调用应用程序从中获取行。在sqlPlus中,它看起来像:

variable rc refcursor

declare
     blah number := 42;
begin
  open :rc for
     select *
     from x
     where x.value = blah;
end;
/

print x

如果将PL / sql重铸为存储函数,则它可能返回值。在这种情况下,您可能想要创建一个收集类型,将所有行提取到该类型的变量中,然后将其返回:

CREATE TYPE number_table AS TABLE OF NUMBER;

CREATE FUNCTION get_blah_from_x (blah  INTEGER)
  RETURN number_table
  IS
    values  number_table;
  BEGIN
    SELECT id
      BULK COLLECT INTO values
      FROM x
      WHERE x.value = blah;
    RETURN values;
  END;
/
Oracle 2022/1/1 18:46:49 有329人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶