当前位置:数据库 > Oracle >>

Oracle pl/sql简述

Oracle pl/sql简述
 
(1)SEQNAME.NEXTVAL里面的值如何读出来?可以直接在insert into test values(SEQNAME.NEXTVAL) 是可以用 这样:     
 
SELECT tmp#_seq.NEXTVAL
 
        INTO id_temp
 
        FROM DUAL;  然后可以用id_temp
 
(2)PLS-00103: 出现符号 ">"在需要下列之一时:
 
代码如下:    
 
IF (sum>0)
 
      THEN
 
   begin
 
         INSERT INTO emesp.tp_sn_PRoduction_log
 
              VALUES (r_serial_number, , id_temp);
 
         EXIT;
 
    end;
 
一直报sum>0 这是个很郁闷的问题 因为变量用了sum  所以不行,后改为i_sum>0
 
(3)Oracle 语法
 
1. Oracle应用编辑方法概览
 
答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用;
 
    2) ODBC
 
    3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用;
 
    4) SQLJ: 很新的一种用java访问Oracle数据库的方法,会的人不多;
 
    5) JDBC
 
    6) PL/SQL: 存储在数据内运行, 其他方法为在数据库外对数据库访问;
 
2. PL/SQL
 
答:1) PL/SQL(Procedual language/SQL)是在标准SQL的基础上增加了过程化处理的语言;
 
    2) Oracle客户端工具访问Oracle服务器的操作语言;
 
    3) Oracle对SQL的扩充;
 
4. PL/SQL的优缺点
 
答:优点:
 
    1) 结构化模块化编程,不是面向对象;
 
    2) 良好的可移植性(不管Oracle运行在何种操作系统);
 
    3) 良好的可维护性(编译通过后存储在数据库里);
 
    4) 提升系统性能;
 
    第二章
 
PL/SQL程序结构
 
1. PL/SQL块
 
答:1) 申明部分, DECLARE(不可少);
 
    2) 执行部分, BEGIN...END;
 
    3) 异常处理,EXCEPTION(可以没有);
 
2. PL/SQL开发环境
 
答:可以运用任何纯文本的编辑器编辑,例如:VI    ;toad很好用
 
3. PL/SQL字符集
 
答:PL/SQL对大小写不敏感
 
4. 标识符命名规则
 
答:1) 字母开头;
 
    2) 后跟任意的非空格字符、数字、货币符号、下划线、或# ;
 
    3) 最大长度为30个字符(八个字符左右最合适);
 
5. 变量声明
 
答:语法
 
    Var_name type [CONSTANT][NOT NULL][:=value];
 
    注:1) 申明时可以有默认值也可以没有;
 
        2) 如有[CONSTANT][NOT NULL], 变量一定要有一个初始值;
 
        3) 赋值语句为“:=”;
 
        4) 变量可以认为是数据库里一个字段;
 
        5) 规定没有初始化的变量为NULL;
 
第三章
 
1. 数据类型
 
答:1) 标量型:数字型、字符型、布尔型、日期型;
 
    2) 组合型:RECORD(常用)、TABLE(常用)、VARRAY(较少用)
 
    3) 参考型:REF CURSOR(游标)、REF object_type
 
    4) LOB(Large Object)
 
2. %TYPE
 
答:变量具有与数据库的表中某一字段相同的类型
 
    例:v_FirstName studengts.first_name%TYPE;
 
3. RECORD类型
 
答:TYPE record_name IS RECORD(            /*其中TYPE,IS,RECORD为关键字,record_name为变量名称*/
 
field1 type [NOT NULL][:=expr1],   /*每个等价的成员间用逗号分隔*/
 
field2 type [NOT NULL][:=expr2],   /*如果一个字段限定NOT NULL,那么它必须拥有一个初始值*/
 
        ...                                /*所有没有初始化的字段都会初始为NULL
 
fieldn type [NOT NULL][:=exprn]);
 
4. %ROWTYPE
 
答:返回一个基于数据库定义的类型
 
    DECLARE
 
      v_StuRec Student%ROWTYPE;            /*Student为表的名字*/
 
    注:与3中定一个record相比,一步就完成,而3中定义分二步:a. 所有的成员变量都要申明; b. 实例化变量;
 
5. TABLE类型
 
答:TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;
 
    例:DECLARE
 
          TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTERGER;
 
          v_Student t_StuTable;
 
BEGIN
 
          SELECT * INTO v_Student(100) FROM Student WHERE id = 1001;
 
        END;
 
    注:1) 行的数目的限制由BINARY_INTEGER的范围决定;
 
6. 变量的作用域和可见性
 
答:1) 执行块里可以嵌入执行块;
 
    2) 里层执行块的变量对外层不可见;
 
    3) 里层执行块对外层执行块变量的修改会影响外层块变量的值;
 
第四章
 
1. 条件语句
 
答:IF boolean_expression1 THEN
 
    ...
 
    ELSIF boolean_expression2 THEN   /*注意是ELSIF,而不是ELSEIF*/
 
    ...                              /*ELSE语句不是必须的,但END IF;是必须的*/
 
    ELSE
 
    ...
 
    END IF;
 
2. 循环语句
 
答:1) Loop
 
       ...
 
         IF boolean_expr THEN        /* */
 
            EXIT;                    /* EXIT WHEN boolean_expr */
 
         END IF;                     /* */
 
       END LOOP;
 
   
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,