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;

目录
相关文章
|
26天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
33 7
|
26天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
26 6
|
26天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
21 5
|
1月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
Oracle 网络协议 关系型数据库
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
171 64
|
1月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
31 1
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例

推荐镜像

更多
下一篇
无影云桌面