当前位置: 代码迷 >> SQL >> PL/SQL的结成元素
  详细解决方案

PL/SQL的结成元素

热度:41   发布时间:2016-05-05 13:14:44.0
PL/SQL的组成元素
块、变量名、数据类型、数据、变量声明、赋值语句、注释
1,块

分类:
a,无名块:动态构造并只能执行一次
b,命名块:前面加了标号的无名块 <<inserttype>>,在end后也要加上标号名
c,子程序:包括在数据库中定义的存储过程,函数等,这些块一旦被定义,即可随时调用
d,触发器:它是存储在数据库中的块,对表进行操作(增删改)时出发

例:
<<inserttype>>/*有标号的无名块即为命名块*/DECLARv_TypeCode1 varchar(20):='CC';v_TypeCode2 varchar(20):='dd';v_TypeRemark1 varchar(20):='Computer';v_TypeRemark2 varchar(20):='C++Lagurage';v_OutPut varchar(20);BEGIN    /*插入数据到type表*/    INSERT INTO type VALUES(v_TypeCode1 , v_TypeRemark1 );    iNSERT INTO type VALUES(v_TypeCode2 , v_TypeRemark2 );    /*把刚才插入的数据输出到屏幕上用DBMS_OUTPUT*/    SELECT type_remark INTO v_OutPut FROM type WHERE typeCode=v_TypeCode1     DBMS_OUTPUT.PUTLINE(v_OutPut );    SELECT type_remark INTO v_OutPut FROM type WHERE typeCode=v_TypeCode2     DBMS_OUTPUT.PUTLINE(v_OutPut );    END inserttype;

例:存储过程,
把上一个例子的DECLAR换成CREATE OR REPLACE PROCEDURE 就变成了存储过程
CREATE OR REPLACE PROCEDURE inserttype ASv_TypeCode1 varchar(20):='CC';v_TypeCode2 varchar(20):='dd';v_TypeRemark1 varchar(20):='Computer;v_TypeRemark2 varchar(20):='C++Lagurage';v_OutPut varchar(20);BEGIN    /*插入数据到type表*/    INSERT INTO type VALUES(v_TypeCode1 , v_TypeRemark1 );    iNSERT INTO type VALUES(v_TypeCode2 , v_TypeRemark2 );    /*把刚才插入的数据输出到屏幕上用DBMS_OUTPUT*/    SELECT type_remark INTO v_OutPut FROM type WHERE typeCode=v_TypeCode1     DBMS_OUTPUT.PUTLINE(v_OutPut );    SELECT type_remark INTO v_OutPut FROM type WHERE typeCode=v_TypeCode2     DBMS_OUTPUT.PUTLINE(v_OutPut );    END inserttype;

例:触发器
在auths表中创建触发器,确保值小于1000才能插入到salary列
CREATE OR REPLACE TRIGGER salary_triggerBEFORE INSERT OR UPDATE of salaryON auths FOR EACH ROW;BEGINIF:new.salary>1000 THENRAISE_APPLICATION_ERROR(-20060,'插入的值不能大于1000!');END IF;END salary_trigger;

2,变量名
合法的标识符:以字母开头;字母数字特殊字符($,_,#)组成;字符内不能有空格;长度不超过30
标识符不区分大小写

3,数据类型
四种数据类型:标量类型、复合类型、引用类型、LOB类型
4,数据:字符型数据、数值型数据、布尔型数据
5,声明变量:variable_name[CONSTRANT]type[not null][:=value]
constrant:表示声明的是一个常量
type:变量类型
not null:非空,必须赋初值
6,赋值语句:可以在块的各个部分用赋值语句variable :=expression;
7,表达式:算术表达式,字符表达式,逻辑表达式
8,注释:--单行注释   /**/多行注释
  相关解决方案