编写plsql语句,创建一个包,包含一个函数和一个过程。函数以图书类型为参数,返回该类型图书的平均价格。过程输出各种类型图书中价格高于同类型图书平均价格的图书信息。
时间: 2023-11-27 18:53:45 浏览: 32
以下是一个示例PL/SQL代码,创建了一个包含一个函数和一个过程的包:
```sql
CREATE OR REPLACE PACKAGE book_pkg AS
FUNCTION get_avg_price(p_type IN VARCHAR2) RETURN NUMBER;
PROCEDURE print_above_avg(p_type IN VARCHAR2);
END book_pkg;
/
CREATE OR REPLACE PACKAGE BODY book_pkg AS
FUNCTION get_avg_price(p_type IN VARCHAR2) RETURN NUMBER IS
v_total NUMBER := 0;
v_count NUMBER := 0;
BEGIN
SELECT AVG(price)
INTO v_total
FROM books
WHERE book_type = p_type;
RETURN v_total;
END;
PROCEDURE print_above_avg(p_type IN VARCHAR2) IS
v_avg_price NUMBER := get_avg_price(p_type);
BEGIN
FOR book IN (SELECT title, price
FROM books
WHERE book_type = p_type
AND price > v_avg_price) LOOP
DBMS_OUTPUT.PUT_LINE('Title: ' || book.title || ', Price: ' || book.price);
END LOOP;
END;
END book_pkg;
/
```
这个包中有一个名为 `get_avg_price` 的函数,以图书类型为参数,并返回该类型图书的平均价格。还有一个名为 `print_above_avg` 的过程,它输出各种类型图书中价格高于同类型图书平均价格的图书信息。这个过程中调用了 `get_avg_price` 函数来获取平均价格。
在这个例子中,我们假设有一个名为 `books` 的表,其中包含书籍的信息,包括书名,价格和类型。这个包可以帮助我们进行各种类型图书的价格分析。