使用Oracle写一个存储过程,通过输入的参数图书编号及顾客编号,生成一份新的订单和详细订单,订单的发货地点是上海南京路,数量为10本。(命名为PROC_BOOK_CUS)
时间: 2024-03-08 19:48:54 浏览: 60
好的,以下是可以实现您需求的 Oracle 存储过程(只供参考):
```
CREATE OR REPLACE PROCEDURE PROC_BOOK_CUS
(
p_book_id IN NUMBER,
p_cus_id IN NUMBER
)
AS
v_order_id NUMBER;
BEGIN
--生成新订单
INSERT INTO orders (customer_id, order_date, ship_address)
VALUES (p_cus_id, SYSDATE, '上海南京路')
RETURNING order_id INTO v_order_id;
--生成新详细订单
INSERT INTO order_details (order_id, book_id, quantity)
VALUES (v_order_id, p_book_id, 10);
COMMIT;
END;
```
该存储过程实现了根据输入的图书编号和顾客编号生成新订单和详细订单的功能,订单的发货地点为上海南京路,图书数量为10本。在执行存储过程时,需要传入两个参数:图书编号和顾客编号。存储过程中使用 RETURNING 语句将新生成的订单号保存在 v_order_id 变量中,再将其用于插入详细订单表中。最后使用 COMMIT 语句提交事务。
相关问题
oracle3、编写一个有参数默认值的存储过程,根据输入的员工编号修改其工资
好的,以下是一个有参数默认值的存储过程:
```sql
CREATE PROCEDURE update_employee_salary
@employee_id INT,
@new_salary DECIMAL(10, 2),
@raise_percentage DECIMAL(4, 2) = 0.05
AS
BEGIN
DECLARE @old_salary DECIMAL(10, 2);
SELECT @old_salary = salary
FROM employees
WHERE employee_id = @employee_id;
IF (@raise_percentage > 0)
BEGIN
SET @new_salary = (@old_salary * (1 + @raise_percentage));
END;
UPDATE employees
SET salary = @new_salary
WHERE employee_id = @employee_id;
END;
```
这个存储过程包括了一个必须提供的参数(员工编号 `@employee_id`)和一个可选的参数(涨薪比例 `@raise_percentage`,默认值为 0.05)。如果提供了 `@raise_percentage` 参数,过程会将新工资设置为旧工资加上涨薪比例的平均数。如果没有提供该参数,则将 `@new_salary` 参数用作新的工资值。
用oracle 写一个方法,通过输入的参数的图书编号得出该书能给读者送的促销礼物。 (命名为FUNC_GET_GIFT)
好的,以下是用 Oracle 编写的 FUNC_GET_GIFT 方法:
```sql
CREATE OR REPLACE FUNCTION FUNC_GET_GIFT (
book_id IN NUMBER
) RETURN VARCHAR2 IS
gift VARCHAR2(100);
BEGIN
SELECT CASE
WHEN price > 50 THEN '一张优惠券'
WHEN price > 30 THEN '一本书'
ELSE '一支笔'
END INTO gift
FROM books
WHERE id = book_id;
RETURN gift;
END;
```
这个函数接收一个图书编号作为参数,根据图书的价格范围来决定送读者什么样的促销礼物。如果图书价格大于 50 元,会送一张优惠券;如果价格在 30 元到 50 元之间,会送一本书;如果价格小于等于 30 元,会送一支笔。最后,函数返回送的礼物名称。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)