【发布时间】:2015-07-08 13:28:12
【问题描述】:
T-SQL 中的示例(SQL Server - 取自 here):
CREATE PROC proc_authors
@au_lname VARCHAR(40)
AS
SELECT
au_id, au_fname, au_lname, city, state
FROM authors
WHERE au_lname = @au_lname
go
是否可以在 Oracle 中创建一个返回内联表的存储过程(无需声明类型 - 像上面那样)?如果不是,最接近的选择是什么?即声明内联类型,然后使用它。这个想法是最小化授予的数据库权限的数量。
请在您的答案中包含示例代码。
使用存储过程与函数的背后原因 - 我们有只能执行存储过程或原始查询的遗留软件。似乎只有其中的存储过程支持参数化执行,这就是我们所追求的。
【问题讨论】:
-
了解遗留应用程序将如何调用过程和使用内联表可能会有所帮助。听起来您确实需要一个 sys_recursor out 参数,如果您的调用者可以将其作为结果集进行处理 - 就像简单查询的结果一样。但这并不完全清楚。
-
@mikron:不,请详细说明您的答案(带有示例代码)。从链接中不太清楚如何使用它。
标签: oracle stored-procedures plsql oracle11g inline