3.1.1 变量的声明
-- 单行注释
/* 多
行
注释
*/
DECLARE
v_empname VARCHAR2 (20);
v_deptname VARCHAR2 (20);
v_hiredate DATE NOT NULL := SYSDATE;
v_empno INT NOT NULL :=7349; -- 一旦出现NOT NULL后必须跟赋值语句
BEGIN
NULL;
END;
/
3.1.2 变量的赋值
set serverout on
DECLARE
v_counter INTEGER;
BEGIN
v_counter := v_counter + 1;
dbms_output.put_line('未赋值的变量示例结果:'||v_counter); -- v_conter 为NULL
END;
/
DECLARE
v_string VARCHAR2 (200);
v_hire_date DATE;
v_bool BOOLEAN;
BEGIN
v_bool := True;
v_hire_date := to_date('2011-12-13','yyyy-mm-dd');
v_hire_date := sysdate;
v_hire_date := date'2011-12-14';
v_string :='This is a string';
END;
/
declare
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_hiredate emp.hiredate%TYPE;
BEGIN
select empno,ename,hiredate into v_empno,v_ename,v_hiredate from emp where empno =&empno;
dbms_output.put_line('员工编号:'||v_empno);
dbms_output.put_line('员工名称:'||v_ename);
dbms_output.put_line('聘用日期:'||v_hiredate);
END;
--如果select into 查询返回多行数据会触发TOO_MANY_ROWS异常
--如果未找到任何行数据就会触发NO_DATA_FOUND异常
/
3.1.3 使用%TYPE
DECLARE
v_empno emp.empno%TYPE;--v_empno具有empno列的类型但不具有empno列的约束信息
v_empno2 v_empno%TYEP;
v_salary number(7,3) not null :=1350.5;
v_othersalary v_salary%TYPE :=1500; --v_othersalary 具有v_salary的类型和约束信息
BEGIN
NULL;
END;
/
3.1.4 使用%ROWTYPE
DECLARE
v_emp emp%ROWTYPE;
BEGIN
select * into v_emp from emp where empno =&empno;
dbms_output.put(v_emp.empno||CHR(10)|| v_emp.ename);
END;
/
--chr(10)表示换行 chr(13)表示回车
DECLARE
CURSOR emp_cursor
is
select empno,empname,job,sal,hiredate from emp;
v_emp emp_cursor%ROWTYPE;
BEGIN
open emp_cursor; --open 打开游标 游标指向第一行
LOOP
FETCH emp_cursor into v_emp; --fetch 检索当前行的信息 并把游标指向下一行
EXIT WHEN emp_cursor%NOTFOUND;
dbms_output.put_line(v_emp.empno
||' '
||v_emp.ename
||' '
||v_emp.job
||' '
||v_emp.sal
||' '
||to_char(v_emp.hiredate,'yyyy-mm-dd')
);
END LOOP;
Close emp_cursor; --close 游标移动到最后一行后关闭游标;
END;
3.1.5 变量的作用域和可见性
<<outer>>
DECLARE
v_empname VARCHar(20);
BEGIN
v_empname :='张三';
<<inner>>
DEclare
v_empname varchar(20);
Begin
v_empname := '李四';
dbms_output.put_line('内层块的员工名称:' || v_empname);
dbms_output.put_line('外层块的员工名称:' || outer.v_empname);--内层访问外层变量
end;
dbms_output.put_line('外层块的员工名称:' || v_empname);
END;
/
3.1.6 常量的定义
DECLARE
c_salary_rate constant number(7,2) := 0.25;
v_salary number(7,2);
Begin
select sal * (1 + c_salary_rate)
into v_salary from emp
where empno = &empno;
dbms_output.put_line('加薪后的薪资:'||v_salary);
end;
plsql开发之变量
最新推荐文章于 2019-07-13 11:25:57 发布