【发布时间】:2019-09-29 20:46:13
【问题描述】:
我有一个家庭作业,希望我使用带有游标的存储过程来返回来自多个表的查询。查询会根据一个数字的输入值进行更改,并且查询可以来自单个表或多个表上的联接,具体取决于运行 anon 块的用户选择的数字。我在网上的 oracle 文档中找到了我需要的完美示例,但是文档中没有匿名块来解释如何调用此过程。
已经搜索过堆栈溢出、谷歌和我的 Joan Casteel 的 plsql 书,但我发现大多数匿名块仅从一张表返回查询。只要它不查询多个表,我就可以使用类似的过程运行一个匿名块,并且我的匿名块仅在它返回单个变量而不是多列表时运行。
这是来自 oracle 文档的代码:
CREATE PACKAGE admin_data AS
TYPE gencurtyp IS REF CURSOR;
PROCEDURE open_cv (generic_cv IN OUT gencurtyp, choice INT);
END admin_data;
/
CREATE PACKAGE BODY admin_data AS
PROCEDURE open_cv (generic_cv IN OUT gencurtyp, choice INT) IS
BEGIN
IF choice = 1 THEN
OPEN generic_cv FOR SELECT * FROM employees;
ELSIF choice = 2 THEN
OPEN generic_cv FOR SELECT * FROM departments;
ELSIF choice = 3 THEN
OPEN generic_cv FOR SELECT * FROM jobs;
END IF;
END;
END admin_data; /
我会发布我的家庭作业,但我认为我最好理解一个示例并尝试应用它。你会如何写匿名块?
【问题讨论】:
标签: stored-procedures plsql cursor sys-refcursor ref-cursor