您的位置:首页 > 数据库 > Oracle

oracle变量

2015-08-06 16:49 676 查看
格式:
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: