oracle变量

格式:
variable_name [CONSTRANT] type [NOT NULL] [:=value];
       变量名                常量         类型        非空             值
如果有关键字NOT NULL, 那后面必须有赋初值。


赋值:
变量可以赋初值、在语句块中赋值,也可以用查询结果赋值   select into 。
DECLAR 
    num NUMBER :=1;
    ch   varchar(4);
    salary NUMBER;
BEGIN
    ch:='abc';
    select salary into salary from emp where name='张三';
END;

如果没有where name ='张三',就会报错,因为返回的结果不止一行。


使用 %TYPE
    使用%TYPE,是的开发人员可以基于已有的变量类型,或者是数据库列的类型来指定变量的类型。
declare
  empname emp.empname%TYPE;
  se varchar2(4);
  sex se%TYPE;
BEGIN
  select empname , sex into empname,sex from emp where empname='张三';
  DBMS_OUTPUT.put_line(empname || ' ' || sex);
END;

    通过%TYPE的类型映射功能,使得在类型发生变化时非常容易对代码进行维护。因为当指定类型发生变化时,如上例
emp.empname类型改变时,empname的类型也会相应地改变。  

使用%ROWTYPE

    %ROWTYPE是与 %TYPE相似的用于绑定到数据库列表的类型,%TYPE仅绑定到单个数据库的类型,而%ROWTYPE则绑
定到一整行的所有列类型,可以将使用%ROWTYPE定义的变量看作是一种结构体。
 
    查询:
DECLARE
  emp_info emp%ROWTYPE;
BEGIN
  select * into emp_info from emp where empname='张三';
  DBMS_OUTPUT.put_line(emp_info.empid || ' ' || emp_info.empname || ' ' || emp_info.sex || ' '|| emp_info.salary);
END;


    插入:
DECLARE
  emp_info emp%ROWTYPE;
BEGIN
  emp_info.empid :=1031;
  emp_info.empname :='王菲';
  emp_info.sex :='女';
  emp_info.salary :=5000;
 
  insert into emp values emp_info;
END;

和游标配合使用:

DECLARE
  T_emp emp%ROWTYPE;
  cursor emp_cursor
     is
     select * from emp;
BEGIN
  open emp_cursor;
  LOOP
    FETCH emp_cursor
      INTO T_emp;
    exit when emp_cursor%NOTFOUND;
   
    DBMS_OUTPUT.put_line(T_emp.empid || ' ' ||T_emp.empname || ' ' || T_emp.sex || ' ' || T_emp.salary);
  END LOOP;
 
  CLOSE emp_cursor;
END;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值