oracle 存储过程返回值怎么写
时间: 2024-09-23 12:09:32 浏览: 37
Oracle存储过程可以有多种形式的返回值,包括数值型、字符型、记录集等。标准的存储过程返回值通常是通过`RETURN`语句来指定结果。以下是一个简单的例子:
```sql
CREATE OR REPLACE PROCEDURE get_employee_info (p_emp_id IN NUMBER)
RETURN NUMBER
AS
BEGIN
-- 查询员工信息并存储在变量v_salary中
SELECT salary INTO v_salary FROM employees WHERE employee_id = p_emp_id;
RETURN v_salary; -- 返回查询结果
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL; -- 没找到数据时返回NULL
END;
/
```
在这个例子中,`get_employee_info`存储过程接收一个整数参数`p_emp_id`,查询对应员工的薪水,并将其作为`NUMBER`类型的值返回。如果查询不到数据,则抛出`NO_DATA_FOUND`异常并返回`NULL`。
对于更复杂的结果,如返回游标或者整个记录集,可以使用`OPEN CURSOR FOR`声明游标,然后使用`FETCH`语句获取结果,最后关闭游标。例如:
```sql
CREATE OR REPLACE PROCEDURE fetch_customer_orders RETURN CURSOR
AS
TYPE order_cursor IS REF CURSOR
FOR SELECT * FROM customer_orders;
cursor_var order_cursor;
BEGIN
OPEN cursor_var FOR SELECT * FROM customer_orders WHERE customer_id = :customer_id;
RETURN cursor_var;
END;
/
```
在这里,`fetch_customer_orders`返回了一个指向`customer_orders`表中满足条件数据的游标。