oracle数据库1.编写一个函数funcl,带一个整型输入参数n,计算参数n的阶乘并返回; 2.编写一个函数func2,带一个整型输入参数n,统计1到n之间奇数的个数并返回 3.编写一个函数func3,带一个整型输入参数n,统计1到n之间奇数的和并返回 4.编写一个期数func4,带一个CLOB类型输入参数source,统计输人参数中单词“hello”出现的次数并返。
时间: 2024-02-27 21:52:22 浏览: 60
好的,以下是针对Oracle数据库的函数实现:
1. 计算n的阶乘的函数funcl的代码如下所示:
```sql
CREATE OR REPLACE FUNCTION funcl(n IN NUMBER) RETURN NUMBER AS
res NUMBER := 1;
BEGIN
IF n = 0 THEN
RETURN res;
ELSE
FOR i IN 1..n LOOP
res := res * i;
END LOOP;
RETURN res;
END IF;
END;
```
2. 统计1到n之间奇数个数的函数func2的代码如下所示:
```sql
CREATE OR REPLACE FUNCTION func2(n IN NUMBER) RETURN NUMBER AS
cnt NUMBER := 0;
BEGIN
FOR i IN 1..n LOOP
IF MOD(i, 2) = 1 THEN
cnt := cnt + 1;
END IF;
END LOOP;
RETURN cnt;
END;
```
3. 统计1到n之间奇数和的函数func3的代码如下所示:
```sql
CREATE OR REPLACE FUNCTION func3(n IN NUMBER) RETURN NUMBER AS
sum NUMBER := 0;
BEGIN
FOR i IN 1..n LOOP
IF MOD(i, 2) = 1 THEN
sum := sum + i;
END IF;
END LOOP;
RETURN sum;
END;
```
4. 统计source中单词“hello”出现次数的函数func4的代码如下所示:
```sql
CREATE OR REPLACE FUNCTION func4(source IN CLOB) RETURN NUMBER AS
cnt NUMBER := 0;
BEGIN
SELECT REGEXP_COUNT(source, 'hello', 1, 'i') INTO cnt FROM DUAL;
RETURN cnt;
END;
```
希望以上的Oracle函数实现能够帮到你。
阅读全文