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('用户编号不正确!');
AI 代码解读

WHEN OTHERS THEN

  DBMS_OUTPUT.put_line('错误:'||SQLERRM); 
AI 代码解读

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;
AI 代码解读

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

 v_sum:=v_sum+v_count;
 v_count:=v_count+1;
end loop;*/
AI 代码解读

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

  v_sum:=v_sum+i; 
end loop; 
AI 代码解读

dbms_output.put_line(v_sum);
end;

/*

| 游标

*/

DECLARE
--声明游标
CURSOR USER_CUR IS

 SELECT USERID,USERNAME 
 FROM SUN.TUSER;
AI 代码解读

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);
AI 代码解读

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;  
AI 代码解读

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);
AI 代码解读

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);
AI 代码解读

EXCEPTION --异常处理

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

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;

Teusc
+关注
目录
打赏
0
0
0
0
0
分享
相关文章
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
129 1
第一篇:数据库基础与概念
这篇文档面向数据库初学者,系统介绍了数据库的基础概念、类型、管理工具及实践方法。内容涵盖数据库定义、应用场景(如电商、银行系统)、数据库管理系统(DBMS)的功能与常见系统(MySQL、PostgreSQL等),以及关系型与非关系型数据库的区别。同时,文章详细解析了基本术语(表、记录、字段、主键、外键)和ER图设计,并提供了实践建议,包括创建简单数据库、学习SQL语言、使用管理工具等。最后推荐了学习资源和书籍,鼓励读者通过实际项目巩固知识,逐步掌握数据库的核心技能。
172 11
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
669 28
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
120 9
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
176 10

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问