存储过程和函数
系统存储过程和函数是数据库系统为了便于管理和维护而预先定义好的一系列程序单元。它们存储在系统模式(如 SYS、SYSDBA 等)下,主要作用是:
1.简化数据库管理 (DBA):
将复杂的数据库管理任务(如查看系统状态、修改参数、收集统计信息)封装成一个简单的命令。
2.提供系统信息访问:
为用户和DBA提供一个标准、便捷的方式来查询数据字典、性能视图(V$视图)和系统状态信息。
3.执行系统级操作:
执行一些需要特定权限或复杂逻辑的内部操作,例如数据迁移、数据库备份恢复等。
4.保证操作规范与安全:
通过封装,避免了用户直接操作底层系统表,保证了操作的规范性和系统的安全性。
1.存储过程
–创建表
CREATE TABLE test_table(id NUMBER PRIMARY KEY,value1 char(10));
–创建存储过程
CREATE OR REPLACE PROCEDURE insert_and_process
IS
BEGIN
–插入1-1000的偶数数据
FOR i IN 1…1000 LOOP
IF MOD(i,2) = 0 THEN
INSERT INTO test_table VALUES(i,‘test’);
END IF;
END LOOP;
select * from test_table;
–查询id>500的行,输出
FOR r IN (SELECT * FROM test_table WHERE id > 500) LOOP
print(r.id||’-’||r.value1);
END LOOP;
–修改id加1
UPDATE test_table SET id = id + 1;
select * from test_table;
–删除id>800的行
DELETE FROM test_table WHERE id > 800;
select * from test_table WHERE id >= 800;
//DROP TABLE test_table;
END;
/
–执行存储过程
EXECUTE insert_and_process;
2.函数:
–创建函数
REATE OR REPLACE FUNCTION CountRowsWithCondition(condition_value IN NUMBER) RETURN NUMBER
IS
row_count NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO row_count
FROM test_table
WHERE id = condition_value;
RETURN row_count;
END;
/
–执行函数
查询test_table表中id为101的行有多少条
DECLARE
condition_value NUMBER := 101;
row_count NUMBER;
BEGIN
row_count := CountRowsWithCondition(condition_value);
print(condition_value || '值有: ’ || row_count||‘条’);
END;
/
文章
阅读量
获赞