dbms_output.put_line想要输出必须设置为on才能在控制台输出: set serveroutput on;
注意: dbms_output.put_line();需要set serveroutput on支持。
在声明部分声明和创建变量; 在可执行部分为变量赋值,通过参数为pl/sql块传值; 通过输出变量查看结果;
①.变量类型:
pl/sql变量: 标量 、复合变量 、参考变量 、LOB(大对象) 非pl/sal变量: Bind 、 host
②.声明变量
Declare v_hiredate DATE; v_deptno number(2) not null :=10; v_location varchar2(13) :='北京'; c_comm constant number :=1000;其中, constant表示程序运行不能改变他修饰的值。 也可以用default代替(:=) 通常用(v_列名)来声明某一列。 一行声明一个变量。
③.使用%type属性声明变量
v_name emp.ename%type; v_banlance number(7,2); v_min_banlance v_banlance%type :=10;用%type会更灵活,但是牺牲的是性能。
④.给变量赋值:
v_hiredate :='31-DEC-19'; v_deptno :=20;⑤绑定变量 在declare外面声明的变量。 如果要引用一个绑定变量,必须加一个冒号前缀。
variable g_salary number declare v_sal emp.sal%type; begin select sal into v_sal from emp where empno=7369; :g_salary :=v_sal; end;单行注释用”–“ 多行注释用”/* … */“
输出为: v_weight 的值:2 v_new_locn 的值:Western CHINA v_weight 的值:601 v_new_locn 的值:china Western CHINA v_message 的值:product 2
使用select语句可以取出数据行,但只能返回一行数据。如果要返回多条数据,要用游标。 使用DML语句修改数据库的行。 使用commit、rollback或者savepoint语句来控制事务。 使用隐式游标检验DML语句的输出。
就是把SQL语句写在begin和end块中。
declare v_sal emp.sal%type; begin select sal into v_sal from emp where empno=7369; end;一个事务以commit和rollback开始,用来初始化一个新的事务。 一个事务以commit和rollback结束。
1.写一个pl/sql块,从dept表中找出最大的部门号,并保存到SQL plus变量中。打印出变量的值。
var G_max_deptno number begin select max(deptno) into :G_max_deptno from dept; end; / print G_max_deptno2.写一个pl/sql块,修改现在部门的位置。要求:客户输入需要修改的部门号,然后在输入新的部门地址。并显示出来修改后的信息。
declare v_deptno dept.deptno%type; v_dept_loc dept.loc%type; begin v_deptno :=&deptno; v_dept_loc :='&localtion'; update dept set loc =v_dept_loc where deptno=v_deptno ; select deptno, loc into v_deptno ,v_dept_loc from dept where deptno=v_deptno ; dbms_output.put_line('部门:' || v_deptno || '修改后的地址:' || v_dept_loc ); end;