oracle 序列赋值变量,Oracle变量的定义、赋值及使用

首先,当在cmd里办入scott密码提示错误时,可以这样改一下,scott的解锁命令是:

以system用户登录:

cmd

sqlplus system/tigertiger

alter user scott identified by "tiger" account unlock;

--学习块的结构

--学习定义变量(了解数据类型)及赋值

--了解:各种PL/SQL块的类型

--块的结构

--案例:根据工号,输出员工姓名

SELECT * FROM emp;

--块!

DECLARE

v_empno NUMBER(4);

v_ename VARCHAR2(10);

BEGIN

v_empno := &请输入工号;

--必须要将查询结果放到变量

SELECT ename INTO v_ename FROM emp WHERE empno=v_empno;

dbms_output.put_line(v_ename);

END;

--异常

DECLARE

v_empno NUMBER(4);

v_ename VARCHAR2(10);

BEGIN

v_empno := &请输入工号;

--必须要将查询结果放到变量

SELECT ename INTO v_ename FROM emp WHERE empno=v_empno;

dbms_output.put_line(v_ename);

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line('执行出错了,老板!');

END;

--小结

DECLARE

--变量区(不能在begin..end中定义)

BEGIN

--业务代码区

excetipn

--异常捕获区

END;

--定义变量(了解数据类型)

--2种:保存一个值=简单变量;保存多个值=复合变量

--简单变量类型:char,varchar2,number,date(同时也列类型),boolean,表.字段%type

--复合变量:表%rowtype,record

DECLARE

v_empno NUMBER(4);

v_ename VARCHAR2(10);

v_job emp.job%TYPE; --如果字段类型改变,脚本不需要改变

BEGIN

v_empno := 7566;

SELECT ename,job INTO v_ename,v_job FROM emp WHERE empno=v_empno;

dbms_output.put_line(v_ename);

IF(v_job='MANAGER')THEN

dbms_output.put_line('经理,吃过饭没。');

END IF;

END;

--需要同上,将多个变量放到一个记录对象中

DECLARE

v_empno NUMBER(4);

my_row emp%ROWTYPE;

BEGIN

v_empno := 7566;

SELECT * INTO my_row FROM emp WHERE empno=v_empno;

dbms_output.put_line(my_row.ename||','||my_row.sal);

END;

--有时不需要一整列,只需要其中几个列。此时用record

DECLARE

--自定义复合类型 my_emp

TYPE my_emp_type IS RECORD(

yg_name emp.ename%TYPE,

yg_sal emp.sal%TYPE

);

my_row my_emp_type; --变量名 数据类型

BEGIN

SELECT ename,sal INTO my_row FROM emp WHERE empno=7788;

dbms_output.put_line(my_row.yg_name||','||my_row.yg_sal);

END;

--扩展:Oracle没有boolean类型?

--思考:性别 true=男,false=女。缺点?性别=保密。所以Oracle建立用char(1)替代,1=男2=女3=保密4=人妖

--Oracle的各种集合类型,对应 java的数组。

--引用变量:在讲解存储过程以后再讲解。

--绑定变量(命令窗口中执行,绑定变量用了 :)

SQL> var name varchar2(10)

SQL> execute :name :='hello';

PL/SQL procedure successfully completed

SQL> print name;

name

---------

hello

如图:

declare

l_dept integer := 20;

currtime date := sysdate;

l_nam varchar2(20) := to_char(add_months(trunc(sysdate),-12),'yyyymmdd'); -- to_char(sysdate,'MM')-13;

type num_list is varray(5) of number;

arr_id num_list := num_list(100,101,123,33,234);

begin

l_dept := 30;

dbms_output.put_line(l_dept);

dbms_output.put_line(currtime);

dbms_output.put_line(l_nam);

dbms_output.put_line(arr_id(1));

end;

变量的定义:

l_dept定义的是整型,

currtime为日期型,

l_nam为字符型并往前退12个月的日期赋值,而-- to_char(sysdate,'MM')-13;会出现负数。

type num_list is varray(4) of number;则是定义数据类型为整型的数组,并且数组长度为4,

arr_id num_list := num_list(100,101,123,33,234);则使用num_list定义的数组类型定义arr_id变量,并为arr_id赋值。

dbms_output.put_line函数则会在DMS Output选项卡中输出,注意:dbms_output.put_line必须放到begin和end之内。

truncate table t4; --清空表里的数据

declare

op nvarchar2(100);

i int ;

j int :=100;

begin

while j<200 loop

select nvl(max(id),0) +1 into i from t4;

insert into t4 values(i,j,'test'||i);

dbms_output.put_line(i);

j:=j+1;

end loop;

end;

-- select * from t4;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值