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 过程已成功完成。

 

posted @ 2017-10-16 16:20  Queenayao  阅读(320)  评论(0编辑  收藏  举报