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;
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;
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;