用oracle 写一个方法,通过输入的参数的图书编号得出该书能给读者送的促销礼物。 (命名为FUNC_GET_GIFT)
时间: 2024-02-27 21:55:53 浏览: 21
好的,以下是用 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 元,会送一支笔。最后,函数返回送的礼物名称。
相关问题
使用orcal写写一个方法,通过输入的参数的图书编号得出该书能给读者送的促销礼物。 (命名为FUNC_GET_GIFT)
好的,以下是可以实现您需求的 Oracle 函数(只供参考):
```
CREATE OR REPLACE FUNCTION FUNC_GET_GIFT
(
p_book_id IN NUMBER
)
RETURN VARCHAR2
AS
v_gift VARCHAR2(100);
BEGIN
SELECT promotion_gift
INTO v_gift
FROM promotions
WHERE book_id = p_book_id;
RETURN v_gift;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN '无促销礼物';
END;
```
该函数实现了根据输入的图书编号查询该书能够送给读者的促销礼物的功能。在执行函数时,需要传入一个参数:图书编号。如果该图书没有促销礼物,则函数返回“无促销礼物”。如果查询结果为空,则函数会捕捉到 NO_DATA_FOUND 异常,同样返回“无促销礼物”。
使用oracle SQL编写一个函数func4,带一个clob类型输入参数source,统计输入参数中单词hello出现的次数并返回
好的,以下是函数func4的实现代码:
```sql
CREATE OR REPLACE FUNCTION func4(source IN CLOB)
RETURN NUMBER
AS
word_count NUMBER := 0;
BEGIN
SELECT REGEXP_COUNT(source, '(^|\s)hello(\s|$)', 1, 'i')
INTO word_count
FROM DUAL;
RETURN word_count;
END;
```
函数说明:
- 函数名为func4,输入参数为CLOB类型的source,返回值为NUMBER类型的单词hello出现次数。
- 函数内部使用了正则表达式函数REGEXP_COUNT来实现单词计数。
- 正则表达式'(^\s)hello(\s|$)'表示匹配以空白字符或开头开始,以空白字符或结尾结束的hello单词。其中'i'表示忽略大小写。
- 函数使用了SELECT INTO语句将计数结果赋值给word_count变量,并返回该变量。
- 如果输入参数为NULL,则函数返回值为0。