如何使用输入参数创建 PL/SQL 存储过程以返回数据集
Posted
技术标签:
【中文标题】如何使用输入参数创建 PL/SQL 存储过程以返回数据集【英文标题】:How to create a PL/SQL stored procedure with input parameter to return a dataset 【发布时间】:2019-01-19 23:39:48 【问题描述】:我是 PL/SQL 的新手,我正在尝试使用一些输入参数创建一个存储过程,我们将使用这些参数来生成我们的报告。
目标是能够根据用户将输入的输入参数生成 100 或多行数据。
我可以在 SQL Server 中执行此操作,但我不确定如何在 Oracle 中执行此操作。
例如:
Create Procedure usp_employees
(@Deptid int not null,
@MaritalStatus varchar(10) null)
As
Begin
Select Firstname, LastName, HireDate, DepartmentName, Marital_Status
From EmployeeTable
Where DeparatmentID = @Deptid
and Marital_Status = @MaritalStatus
End;
然后我像这样执行它:
Execute usp_employees 1,'F';
有人可以告诉我如何使用 PL/SQL 重新创建和执行它吗?
谢谢。
【问题讨论】:
您使用的是哪个 Oracle 版本? 我相信是11g。 使用最新版本,您可以使用隐式结果集:***.com/a/40360471 【参考方案1】:你可以这样做:
CREATE OR REPLACE PROCEDURE usp_employees
(p_dept_id IN int,
p_MaritalStatus IN VARCHAR2(10),
p_cursor OUT SYS_REFCURSOR)
IS
BEGIN
Open p_cursor for
select Firstname, LastName, HireDate,
DepartmentName, Marital_Status
from EmployeeTable
where DeparatmentID=p_dept_id
and Marital_Status=p_maritalstatus;
EXCEPTION
WHEN no_data_found THEN
NULL;
END;
/
要通过 GUI 运行,请右键单击存储过程,然后单击测试。提供输入参数并单击执行。您可以 Step into the code 或 Over。完成后,选择参考光标旁边的“...”以查看结果集。
通过查询,
SQL> var rc refcursor
SQL> execute myproc(10, “Single”, :test)
SQL> print rc
【讨论】:
感谢 Gauravsa。执行它以查看结果的最佳方法是什么? 通常我右键单击存储过程并单击测试。然后在测试窗口中提供输入并点击“...”查看结果集 如果您有一个带有一个输出参数的过程,那么我宁愿创建一个函数CREATE OR REPLACE FUNCTION usp_employees (p_dept_id IN integer, p_MaritalStatus IN VARCHAR2) RETURN SYS_REFCURSOR IS ...
Wernfried Domscheit,在这种情况下创建函数而不是存储过程有哪些优点?以上是关于如何使用输入参数创建 PL/SQL 存储过程以返回数据集的主要内容,如果未能解决你的问题,请参考以下文章
使用带有布尔输入参数的 PL/SQL 在 oracle 中调用 java 存储过程