• pl/sql developer学习笔记(一)


    pl/sql developer的基本语法规则:

    <1> 语句可以写在多行

    <2> 词汇通过空格分隔

    <3> 每条语句必须通过分号结束

    <4> 标识符的规定:-最多可以包含30个字符-不能包含保留字,若有使用双引号括起来九 嵌套块和变量作用域:-不能包含保留字,若有使用双引号括起来-必须以字母字符开始

    <5> 字符和日期必须用单引号括起来

    <6> 注释可以是/* 和*/之间的多行注释也可以是单行注释,以--开始

    <7> 赋值语句:使用“:=”作为赋值符号,而不是“=

    <8>参数的格式大小写无关。

    1、一些常用的基本类型:

    基本类型的声明(基本类型的声明是在declare和begin之间):

    1 para varchar2(20) :='hello china';--字符数据
    2 a number:=3;--整形数据
    3 b constant number :=1000;--常量

    注意:常量的值是不能被改变的,否则会出现dORA-06550:PLS-00103的错误。

    2、基本的输出及格式

    1 dbms_output.put_line(v_para);--一般的输出
    2 dbms_output.put_line('这里是输出的内容'||v_para);
    3 dbms_output.put_line('第一个参数'||v_para1||'第二个参数'||v_para2);

    输出的函数为:dbms_output.put_line,并且输出的内容之间是用"||"隔开。

    3、声明表,相当于数组的功能。

     1 declare
     2 --第一步
     3 type mytable_table_type is table of number index by binary_integer;
     4 --第二步:创建一个mytable_tabe_type类型的变量 para_table
     5 para_table mytable_table_type;
     6 --和java数组的区别:
     7 --1、不需要指定长度
     8 --2、下标可以为负数
     9 
    10 begin
    11 para_table(0):=0;
    12 para_table(-8):=-8;
    13 para_table(10):=10;
    14 
    15 dbms_output.put_line(para_table(-8));
    16 end;

    4、record类型,相当于一个类或结构体。

     1 declare 
     2   --创建类型  RECORD
     3 type myrecord_record_type is record
     4 (
     5          first_name varchar2(10),
     6          last_name varchar2(20),
     7          salary number(6)
     8 );
     9 --定义变量
    10 para_record myrecord_record_type;
    11 
    12 begin
    13     para_record.first_name:='zhou';
    14     para_record.last_name:='***';
    15     para_record.salary:=5500;
    16     dbms_output.put_line(para_record.first_name||'  '||para_record.last_name||'--- '||para_record.salary);    
    17    end;

    5、%type和%rowtype的使用,%type可以获取表格中某一列的值类型。%rowtype表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据。

    View Code
     1 declare 
     2  v_para1 number;
     3  v_para2 demo.xm%type;--取得demo表中xm列的值
     4  v_para3 v_para1%type;--获取已经声明的v_para1的类型,即为number
     5  
     6  v_para4 demo%rowtype;--取表demo中的值
     7 begin
     8   -- Test statements here
     9     v_para2:='china';
    10     v_para3:=1234;
    11     dbms_output.put_line('v_para2的值:'||v_para2 ||'   v_para3的值:'||v_para3);
    12   
    13     
    14     select * into v_para4 from demo where xm='张杰' and xy='药学院';--如果有多条记录怎么都取出来
    15     dbms_output.put_line(v_para4.xm||'   '||v_para4.xy);
    16 end;


    6、模块外面的函数不能访问模块里面的数据。见下例

    block
     1 declare 
     2   -- Local variables here
     3           v_para varchar2(50):='china';
     4 begin
     5          dbms_output.put_line(v_para);
     6         -- dbms_output.put_line(v_para_inside);/*错误,要先声明才能读出,在模块里面声明,只在里面有效*/
     7          declare
     8          v_para_inside varchar2(10):='hello';
     9          begin
    10          dbms_output.put_line(v_para);
    11           dbms_output.put_line(v_para_inside);
    12 end;
    13 end;

    7、为变量赋值的操作,怎么从数据库中直接取值赋给变量。

    View Code
     1 declare 
     2   -- Local variables here
     3  v_a varchar2(10);
     4  v_b date;
     5  v_c number;
     6 begin
     7   -- Test statements here
     8     v_a:='2013-12-14';
     9     v_b:=to_date(v_a,'yyyy-mm-dd');
    10     dbms_output.put_line(v_b);
    11     --为v_c赋值
    12     select count(*) into v_c from demo;
    13     dbms_output.put_line(v_c);
    14   
    15 end;

    8、为一个表中插入多条记录。

    View Code
     1 declare 
     2   -- Local variables here
     3  v_zpcj demo_zpcj.zpcj%type :='aaa';
     4  v_count number(2) :=1;
     5 begin
     6   -- Test statements here
     7     loop
     8     insert into demo_zpcj(zpcj) values(v_zpcj);
     9     v_count:=v_count+1;
    10     exit when v_count>5;
    11     end loop;
    12   
    13 end;

    9、for函数实现。

    View Code
     1 declare 
     2   -- Local variables here
     3   s number:=0;
     4 begin
     5   -- Test statements here
     6   for i in 1..100 loop
     7     s:=s+i;
     8     end loop;
     9     dbms_output.put_line(s);
    10 end;
  • 相关阅读:
    启动ASM 数据库的步骤
    ora15031 DBCA找不到ASM磁盘组
    ORA12514 解决方法
    Rhel Linux 5.1 (32 位)上安装 Oracle ASM数据库 11g 第 1 版
    Oracle ASM for linx as 4 x8664 创建过程
    在安腾AI64 RHEL3 U3服务器上安装ORACLE10G
    ora12528 : message 12528 not found; product=RDBMS ; facility=ora
    linux下启动oracle服务和监听程序
    linux内核升级RPM包安装问题!!!!
    AS4 下安装Oracle 10g(ASM & RAW)
  • 原文地址:https://www.cnblogs.com/bindot/p/plsql.html
Copyright © 2020-2023  润新知