Oracle数据库基本概念理解(3)

简介: Oracle数据库基本概念理解(3)

/*

| PL/SQL编程

*/
--声明变量
DECLARE
V_NAME VARCHAR2(20); --一般变量
V_AGE NUMBER(2);
v_id SUN.TUSER.USERID%TYPE:=14;--属性变量
v_user SUN.TUSER%ROWTYPE; --行属性变量
BEGIN
--赋常量值
V_NAME:='Tom';
V_AGE :=20;
DBMS_OUTPUT.put_line('姓名:'||V_NAME||'年龄:'||V_AGE);
--SELECT * FROM SUN.TUSER;
--通过SELECT INTO给变量赋值
SELECT USERNAME,USERID INTO V_NAME,V_AGE FROM SUN.TUSER;
-- WHERE USERID=v_id;
DBMS_OUTPUT.put_line('姓名:'||V_NAME||'年龄:'||V_AGE);
--给行属性变量赋值
select * into v_user from sun.tuser where userid=v_id;
dbms_output.put_line('----------------------------');
dbms_output.put_line(v_user.username);
dbms_output.put_line('----------------------------');
EXCEPTION--异常处理
WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.put_line('用户编号不正确!');

WHEN OTHERS THEN

  DBMS_OUTPUT.put_line('错误:'||SQLERRM); 

END;

--循环

/*

| 循环语句

*/
declare
v_count number:=1; --声明变量并赋值
v_sum number:=0;
begin
/*loop --loop循环

v_sum:=v_sum+v_count;
v_count:=v_count+1;
exit when v_count>10;

end loop;
*/
/* while v_count<=10 loop --while 循环

 v_sum:=v_sum+v_count;
 v_count:=v_count+1;
end loop;*/

for i in 1..10 loop --for循环

  v_sum:=v_sum+i; 
end loop; 

dbms_output.put_line(v_sum);
end;

/*

| 游标

*/

DECLARE
--声明游标
CURSOR USER_CUR IS

 SELECT USERID,USERNAME 
 FROM SUN.TUSER;

V_ID SUN.TUSER.USERID%TYPE;
V_NAME SUN.TUSER.USERNAME%TYPE;
BEGIN
--第一种使用游标方式
/*
OPEN USER_CUR;--打开游标
LOOP --遍历游标

 FETCH USER_CUR INTO V_ID,V_NAME;
 EXIT WHEN USER_CUR%NOTFOUND;
 DBMS_OUTPUT.put_line('第'||USER_CUR%ROWCOUNT||'个学生:'||V_ID||' '||V_NAME);

END LOOP;
close user_cur; --关闭游标
*/

--第二种使用方式 for 遍历游标 这种方式不用先打开游标
for v_user in USER_CUR LOOP

   DBMS_OUTPUT.put_line('第'||USER_CUR%ROWCOUNT||
   '个学生:'||v_user.USERID||
   ' '||V_USER.USERNAME);
END LOOP;  

END;

/*

| 存储过程

*/
--创建存储过程
CREATE or replace PROCEDURE INSERT_USER
( V_USERID NUMBER,
V_NAME VARCHAR2,
V_PWD VARCHAR2)
IS
BEGIN

 INSERT INTO SUN.TUSER(USERID,USERNAME,PWD)
VALUES(V_USERID,V_NAME,V_PWD);

END;

/*

| 存储过程调用

*/
--存储过程调用
begin
--按位置调用
--INSERT_USER(14,'111','111') ;
--按名称
INSERT_USER(V_USERID=>15,V_PWD=>'222',V_NAME=>'222') ;
end;

--符合规则的存储过程
CREATE PROCEDURE INSERT_USER2 (
V_USERID SUN.TUSER.USERID%TYPE, --使用属性变量
V_NAME SUN.TUSER.USERNAME%TYPE,
V_PWD SUN.TUSER.PWD%TYPE,
ON_FLAG OUT NUMBER, --输出参数
ON_MSG OUT VARCHAR2
)
IS
BEGIN

 ON_FLAG:=1;
 ON_MSG:='添加成功!';
 INSERT INTO SUN.TUSER(USERID,USERNAME,PWD)
VALUES(V_USERID,V_NAME,V_PWD);

EXCEPTION --异常处理

 WHEN OTHERS THEN 
    ON_FLAG:=SQLCODE; --异常代码
    ON_MSG:=SQLERRM; --异常信息输出变量
    rollback;

END;
--调用
DECLARE
V_FLAG NUMBER;
V_MSG VARCHAR2(100);
BEGIN
INSERT_USER2(16,'555','555',V_FLAG,V_MSG );
DBMS_OUTPUT.put_line(V_FLAG||V_MSG);
-- select * from sun.tuser;
END;

目录
相关文章
|
4天前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
8天前
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
|
10天前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
22 2
|
10天前
|
SQL 存储 Oracle
"挑战极限!Oracle数据库精英试炼场:夺命连环5问,你能否一路披荆斩棘,登顶技术巅峰?"
【8月更文挑战第9天】Oracle,数据库领域的巨擘,以卓越的数据处理能力、稳定性和安全性成为企业级应用首选。今天我们带来“Oracle夺命连环25问”。首问:核心组件有哪些?答:实例(含内存结构和后台进程)、物理存储(数据文件、控制文件等)及逻辑存储(表空间、段等)。第二问:如何理解事务隔离级别?答:Oracle支持四种级别,默认READ COMMITTED,避免脏读,但可能遇到不可重复读和幻读。
22 0
|
11天前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
35 7
|
26天前
|
Oracle 安全 关系型数据库
|
19天前
|
开发框架 Oracle 关系型数据库
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
|
25天前
|
Oracle 关系型数据库 数据库
|
26天前
|
存储 Oracle 关系型数据库
|
25天前
|
SQL Oracle 关系型数据库
关系型数据库Oracle设置 RMAN 环境:
【7月更文挑战第25天】
42 2

推荐镜像

更多