Oracle数据库基本概念理解(3)
2023-09-14 08:57:41 时间
/*
===========================================================
| 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;
相关文章
- ORA-55329: same model string specified more than once in the list of models ORACLE 报错 故障修复 远程处理
- 优化优化Oracle数据库:改善参数配置(oracle数据库参数)
- Oracle中合并报表:探索实现的方法(oracle合并报表)
- Oracle数据库中增删改查技术的探究(oracle的增删改查)
- Oracle 日期格式转换之精彩探索(oracle日期格式转换)
- Oracle数据库的高性能SQL优化技术(oracle高性能sql)
- 表Oracle数据库中建立分区表的方法(oracle建分区)
- Oracle触发器的类型及其应用(oracle触发器类型)
- 深入理解Oracle数据库的触发器类型(oracle触发器类型)
- 利用Oracle触发器管理数据库信息(oracle触发器类型)
- Oracle商业版——企业级数据库管理利器(oracle商业版)
- Oracle用户类型及其特点简介(oracle用户类型)
- 管理订单,轻松拥有Oracle系统(oracle订单管理系统)
- Oracle ASM配置:构建高性能、高可用的存储管理方案(oracleasm配置)
- 备份基于 Oracle 数据库的表增量备份实现(oracle 表增量)
- Oracle数据库管理:如何管理多个SID?(oracle多个sid)
- 破解Oracle用全数字解开奥妙(oracle全部为数字)
- 架设OA系统,连接Oracle数据库(oa系统连接oracle)
- Oracle数据库管理实现企业高效运行(in oracle)
- IE浏览器上使用Oracle数据库的操作指南(ie 上oracle)
- 于数据挖掘Oracle不能助力数据挖掘的原因(oracle为何不能用)
- Oracle中转义字符的使用(oracle中转义的语法)
- 探寻Oracle数据库归档时机(oracle什么时候归档)
- Oracle,背后的不为人知的面纱(oracle什么品怕)
- Oracle数据库汉语使用指南(oracle中文使用手册)
- 方式Oracle中序列号的自动生成方式(oracle中序列的生成)
- 如何在Oracle中添加新的字段(oracle中如何加列)
- Oracle 丢失文件恢复的生机(oracle 丢文件)
- Oracle RAC提高查询效率一探究竟(oracle rac查询)