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