oracle变量

来源:互联网 发布:网络安全工程师证书 编辑:程序博客网 时间:2024/06/10 21:01
格式:
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
原创粉丝点击