pl/sql基础(一)

一: pl/sql基本结构

declare
--声明区
v_first_name varchar2(35);
v_last_name varchar2(35);
c_count constant number:=0;
begin
--语句执行区
select first_name,last_name into v_first_name,v_last_name from
student.student
where student_id=1223;
dbms_output.put_line('student name:' || v_first_name || '' || v_last_name);
exception
--异常处理区
  when no_data_found then
    dbms_output.put_line('therer is no data found');
end;
1.声明: 从declare后到begin关键字前都是声明区,允许声明:变量、常量、游标
  普通定义:变量名 数据类型 {:=默认值}
  数据类型可以是系统支持数据类型,如varchar2,char,number,也可以是Anchored数据类型,即与对象列的数据类型绑定,
  当列类型改变时,变量的数据类型也跟着改变了
  
  SQL> declare
    2  v_name student.student.first_name%TYPE;
    3  begin
    4  select first_name into v_name from student.student where student_id=123;
    5  dbms_output.put_line(v_name);
    6  end
    7  ;
    8  /
  Pierre  

2.执行PLSQL语句块时,会将语句块发给服务器的PL/SQL引擎,在此进行编译,编译包括以下步骤:
  新语句:检查编译错误 -> 为变量分配存储地址 -> 生成伪码 -> 执行
  已经执行过: 原语句的伪码 ->执行
  
3.特殊符号
  在SQLPLUS中执行语句块,点号(.)表示语句块的结尾,斜线(/)表示执行该语句块
  SQL> set serveroutput on  --开启dbms_output结果输出
  SQL> begin
    2  dbms_output.put_line('hello world');
    3  end;
    4  /
  hello world

  PL/SQL procedure successfully completed.
  
4.SQLPLUS中调用plsql并用替代变量给plsql变量赋值
  SQL> set define on 
  SQL> declare
    2  v_stuid number := &stuid;
    3  v_name varchar2(35);
    4  begin
    5  select first_name into v_name from student.student where student_id=v_stuid;
    6  dbms_output.put_line(v_name);
    7  end
    8  ;
    9  /
  Enter value for stuid: 123
  old   2: v_stuid number := &stuid;
  new   2: v_stuid number := 123;
  输出结果:Pierre

  PL/SQL procedure successfully completed.

4.常见数据类型
   varchar2(maximum length)
     .存储变长的字符数据
     .varchar2是oracle提供的独特的数据类型,oracle保证在任何版本中该数据类型向上和向下兼容,
      但不保证varchar,这是因为varchar是标准sql提供的数据类型,有可能随着sql标准的变化而改变
     .表列中的varchar2最大只支持4000个bytes,pl/sql中定义的vrachar2变量最大32767个bytes
        一个字母(不区分大小写) = 1 bytes
        一个汉字 = 2 bytes
        
   char(maximum length)
     .存储定长的字符数据(不足补空格)
         SQL> declare
          2  v_test char(15) := '11';
          3  begin
          4  dbms_output.put_line(length(v_test));
          5  end
          6  ;
          7  /
        15 --值只有2位,其余的补了空格,所以总长度总是定义时的位数
        
     .表列最大支持2000个bytes,pl/sql中char变量则与varchar2一样最大32767个bytes
 

5.其他
  set serveroutput on  --开启dbms_output结果输出
  set define on --开启替代变量
  dbms_output.put('输出不换行');
  dbms_output.put_line('输出换行');

 

posted on 2013-09-26 00:56  doclaim  阅读(120)  评论(0)    收藏  举报