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;


目录
打赏
0
2
2
0
57
分享
相关文章
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
54 28
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
52 10
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
【赵渝强老师】Oracle数据库的闪回技术
在Oracle数据库操作中,难免会遇到误删表或提交错误事务等问题,可能导致数据丢失甚至数据库停止运行。传统解决方法依赖备份恢复,但需提前准备正确备份。为此,Oracle提供了闪回技术,无需备份即可快速恢复数据。它支持7种类型的操作,如闪回查询、版本查询、表恢复等,能有效应对逻辑损坏和用户错误。闪回技术基于还原(undo)数据管理,启用自动管理后可实现高效恢复。
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
552 2
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
158 7
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
3111 1
Oracle优化01-引起数据库性能问题的因素
Oracle优化01-引起数据库性能问题的因素
202 0

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

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