Oracle数据库基本概念理解(3)
类别:Oracle数据库 作者:码皇 来源:<a href="http://blog.csdn.net/qq_34137397" target="_blank" rel="nofollow 点击:
Oracle数据库基本概念理解。
Oracle数据库基本概念理解
/*===========================================================| 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;
相关热词搜索: