Oracle——PL/SQL(1)
1.显示输出:set serverout on;
2.定义变量:
标准语法格式:
<变量名><数据类型>[(长度):=<初始值>]
declare
v_name varchar2(20):='Name';
begin
dbms_output.put_line('v_name:'||v_name);
end;
/
输出结果为:
v_name:Name
2.定义常量:
语法格式:
<常量名>constant<数据类型>:=<常量值>;
declare PI number:=3.14; begin dbms_output.put_line('圆周率='||PI); end; /
declare PI number; begin PI:=3.14; dbms_output.put_line('圆周率='||PI); end; /
4.匿名块
创建一个匿名PL/SQL块,向部门表dept插入一条新记录,部门编号为4,部门名为广告部,其他值为空。(要求每个字段值都通过变量写入表中)
declare v_deptno number:=4; v_dname varchar2(20):='广告部'; begin insert into dept(deptno,dname) values(v_deptno,v_dname); end; /
5.替代变量
&是oracle里的替代变量。如果有一个&name,在sqlplus执行的时候,会提示你输入一个name对应的值。然后name的值会替代到sql里,这里是替代,不是参数绑定,所以可以替换sql中的静态部分,比如字段名,表名 &&也是替代变量,和&一样的功能,不过他是多次替代。
&:
select &fieldname from dual; 结果: 输入 fieldname 的值: sysdate 原值 1: select &fieldname from dual 新值 1: select sysdate from dual SYSDATE -------------- 16-10月-17
&&:
select &&fieldname from dual; 输入 fieldname 的值: sysdate 原值 1: select &&fieldname from dual 新值 1: select sysdate from dual SYSDATE -------------- 16-10月-17 第二次调用: select &&fieldname from dual; 原值 1: select &&fieldname from dual 新值 1: select sysdate from dual SYSDATE -------------- 16-10月-17
如果要取消filedname的值:
SQL> undefine fieldname 再次调用语句: SQL> select &&fieldname from dual; 输入 fieldname 的值: sysdate 原值 1: select &&fieldname from dual 新值 1: select sysdate from dual SYSDATE -------------- 16-10月-17
修改上一题,向部门表dept插入一条新记录时,要求使用替代变量输入新的部门号和部门名,最后显示插入的新记录。
declare 2 v_deptno dept.deptno%type :=&deptno; 3 v_dname dept.dname%type :=&dname; 4 begin 5 insert into dept(deptno,dname) values(v_deptno,v_dname); 6 commit; 7 end; 8 / 输入 deptno 的值: 90 原值 2: v_deptno dept.deptno%type :=&deptno; 新值 2: v_deptno dept.deptno%type :=90; 输入 dname 的值: 'education' 原值 3: v_dname dept.dname%type :=&dname; 新值 3: v_dname dept.dname%type :='education'; PL/SQL 过程已成功完成。 SQL> select * from dept where deptno=90; DEPTNO DNAME LOC ---------- -------------- ------------- 90 education
6.绑定变量(全局变量)
创建一个匿名块,使用绑定变量在屏幕上输出“My PL/SQL Block Works”。
SQL>variable v varchar2(50); SQL> begin 2 :v:='My PL/SQL Block Works'; 3 end; 4 / PL/SQL 过程已成功完成。 SQL> print v V -------------------------------------------------------------------------------- My PL/SQL Block Works 或者: SQL> begin 2 :v:='My PL/SQL Block Works'; 3 dbms_output.put_line(:v); 4 end; 5 / My PL/SQL Block Works PL/SQL 过程已成功完成。