如何使用输入参数创建PL / SQL存储过程以返回数据集

时间:2019-01-19 23:39:48

标签: sql oracle plsql

我是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重新创建和执行它吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

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运行,请右键单击存储过程,然后单击“测试”。提供输入参数,然后单击执行。您可以单步执行代码或结束。完成后,选择参考光标旁边的“ ...”以查看结果集。

通过查询

SQL> var rc refcursor
SQL> execute myproc(10, “Single”, :test)
SQL> print rc