网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

很全的PLSQL常用基本语法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为需要朋友们搜集整理了很全的PLSQL常用基本语法相关资料,希望对各位网友有所帮助!


    1.联合数组:
    联合数组的语法如下:
     typetype_nameisTABLEOFelement_type[NOTNULL]
     INDEXBYelement_type;
     table_nameTYPE_NAME;
    示例:
     declare
     typelast_name_typeisTABLEOFstudent.last_name%TYPE
     INDEXBYBINARY_INTRGER
     last_name_tablast_name_type;
    2.嵌套表:
    基本语法:
     typetype_nameISTABLEOFelement_type[NOTNULL];
     table_nameTYPE_NAME;
    示例:
     declare
     TYPElast_name_typeISTABLEOFstudent.last_name%TYPE;
     last_name_tablast_name_type:=last_name_type();
    3.变长数组:
    基本语法:
     TYPEtype_nameIS{VARRY|VARYINGARRAY}(size_limit)OF
     element_type[NOTNULL]
     varray_nameTYPE_NAME;
    示例:
     DECLARE
     TYPElast_nameISVARRAY(10)OFstudent.last_name%TYPE;
     last_name_varraylast_name;
    4.多层集合:
    基本语法:
     varray_name(subscriptoftheoutervarray)(subscriptoftheinnervarray)
    示例:
     DECLARE
     TYPEvarray_type1ISVARRAY(10)OFINTEGER;
     TYPEvarray_type2ISVARRAY(5)OFvarray_type1;
     varary1varray_type1:=varray_type1(2,4,6,8);
     varray2type_type2:=varray_type2(varray1);
    BEGIN
     DBMS.OUTPUT_LINE('varrayofintegers');
     FORiIN1..4LOOP
     DBMS.OUTPUT_LINE('varray1('||i||'):||varray1(1));
     ENDLOOP;
     varray2.EXTEND;
     varray2(2):=varray_type1(1,3,5,7);
     FORiIN1..3LOOP
     FORjIN1..4LOOP
     DBMS.OUTPUT_LINE
     ('varray2('||i||')('||j||'):=||varray2(i)(j);
     ENDLOOP;
     ENDLOOP;
    END
    5.IF语句:
    基本语法:
     IFCONDITIONTHEN
     statement1;
     ....
     statementn;
     ENDIF;
    6.IF-THEN-ELSE语句:
    基本语法:
     IFCONDITIONTHEN
     statement1;
     ELSE
     statement2;
     ENDIF
     statement3;
    7.ELSIF语句
    基本语法:
     IFCONDITION1THEN
     statement1;
     ELSIFCONDITION2THEN
     statement2;
     ELSIFCONDITION3THEN
     statement3;
     .......
     ELSE
     statementN;
     ENDIF;
    8.CASE语句:
    基本语法:
     CASESELETOR
     WHENEXPESSION1THENSTATEMENT1;
     WHENEXPESSION2THENSTATEMENT2;
     ........
     WHENEXPESSIONNTHENSTATEMENTN;
     ELSESTATEMENTN+1;
    ENDCASE;
    9.搜索式CASE:
    基本语法:搜索式CASE语句有个产生布尔值的搜索条件.
     CASE
     WHENSEARCHCONDITION1THENSTATEMENT1;
     WHENSEARCHCONDITION1THENSTATEMENT2;
     .......
     WHENSEARCHCONDITION1THENSTATEMENTN;
     ELSESTATEMENTN+1;
     ENDCASE;
    10.NULLIF和COALESCE函数:
    1)NULLIF函数:
     NULLIF函数会比较两个表达式,如果两者相同,返回一个NULL,否则返回一个表达式的值。
     NULLIF(expression1,expression2)
    2)COALESCE函数
     COALESCE函数会把表达式列表中的每个表达式与NULL比较,并返回第一个非NULL表达式的值。
     COALESCE(expression1,expression2,....,expressionN);
     等价于:NVL(expression1,NVL(expression2,NVL(expression3,.
    ..)))
    11.EXIT语句:
    基本语法:
     LOOP
     statement1;
     statement2;
     IFCONDITIONTHEN
     EXIT;
     ENDIF;
     ENDLOOP;
     statement3;
    12.EXITWHEN语句:
    基本语法:
     LOOP
     statement1;
     statement2;
     EXITWHENcondition;
     ENDlOOP;
     statement3;
    13.WHILE循环:
    基本语法:
     WHILECONDITIONLOOP
     statement1;
     statement2;
     ......
     statementN;
     ENDLOOP;
    14.WHILE中提前中止:
    基本语法:
     WHILECONDITIONLOOP
     statement1;
     statement2;
     EXITWHENCONDITION;
     ENDLOOP;
     statement3;
    15.数值型FOR循环:
    基本语法:
     FORloop_counterIN[REVERSE]lower_limit..upper_limitLOOP
     statement1;
     statement2;
     .....
     statementN;
     ENDLOOP;
    16.CONTINUE语句
    基本语法:
     LOOP
     statement1;
     statement2;
     IFCONTINUE_CONDITIONTHEN(CONTINUEWHENCONTINUE_CONDITION)
     CONTINUE;
     ENDIF;
     EXITWHENEXIT_CINDITION;
     ENDLOOP;
     statement3;
    17.RAISE_APPLICATION_ERROR
    基本语法:RAISE_APPLICATION_ERROR是Oracle提供的一种特殊的内置过程,允许开发人员
     为特定的程序创建有意义的错误消息,适用于用户定义异常。
     RAISE_APPLICATION_ERROR(error_number,error_message)||
     RAISE_APPLICATION_ERROR(error_number,error_message,keep_errors);
    18.游标
    1)显示游标处理步骤:
     a)声明游标:建立游标初始化环境;
     b)打开游标:打开被声明的游标,并分配内存;
     c)检索信息:从打开的游标中检索信息;
     d)关闭游标:关闭检索后的游标,释放所分配的内存;
    2)声明游标:
     CURSORc_cursor_nameISselectstatement
    示例:
     DECLARE
     CRUSORc_mycursorIS
     SELECT*FROMzipcodeWHEREstate='NY';
    3)记录类型:
     为创建一个基于表或者基本游标的记录,可以用%ROWTYPE属性;
     record_nametable_nameorcursor_name%ROWTYPE
    4)打开游标
     OPENcursor_name;
    5)检索信息:
     FETCHcursor_nameINTOPL/SQLvariables;
     或者
     FETCHcursor_nameINTOPL/SQLrecord;
    6)关闭游标:
     CLOSEcurosr_name;
    7)声明一个记录类型:
     TYPEtype_nameISRECORD
     (field_name1DATATYPE1;
     field_name2DATATYPE2;
     .......
     field_nameNDATATYPEN;
     );
     record_nameTYPE_NAME%ROWTYPE;
    8)游标属性:
     %NOTFOUNDcursor_name%NOTFOUNT当前面的FETCH操作没有返回数据行时,属性值是TRUE;
     %FOUND cursor_name%FOUNT 当前面FETCH操作返回一行数据时,属性值为TRUE;
     $ROWCOUNTcursor_name%ROWCOUNT从游标中所检索的记录改数量;
     $ISOPENcursor_name%ISOPEN当游标处于打开状态时,属性值为TRUE;
    
    9)使用游标FOR循环:
     借助于游标FOR循环,游标打开、检索、关闭的过程被隐含地实现。
     示例:
     DECLARE
     CURSORc_studentIS
     SELECTstudent_id,last_name,first_name
     FROM
    studentWHEREstudent_id<100;
     BEGIN
     FORr_studentINc_student
     LOOP
     INSERTINTOtable_log
     VALUES(r_student.last_name);
     ENDLOOP;
     END;
    10)FORUPDATE和WHERECURRENT游标
     基本语法:
     FOR_UPDATEOF
     示例:
     DECLARE
     CURSORc_courseIS
     SELECTcourse_no,cost
     FROMcourseFORUPDATE;
     BEGIN
     FORr_courseINc_cursor
     LOOP
     IFr_course_cost<2500
     THEN
     UPDATEcourse
     SETcost=r_course.cost+10
     WHERECOURSE_NO=r_course.course_no;
     ENDIF;
     ENDLOOP;
     END;
    
     FOR_CURRENTOF可以和FOR_UPDATE_OF一起使用,免于在UPDATE语句中添加对应的WHERE条件,
     因为更新操作作只针对游标的录前记录。
    19.解发器
    1)基本通用语句:
     CREATE[ORREPLACE]TRIGGERTtragger_name
     {BEFORE|AFTER}Trigger_eventONtable_name
     [FOREACHROW]
     [FOLLOWSanother_trigger]
     [ENABLE|DISABLE]
     [WHENCONDITION]
     DECLARE
     declationstatements
     BEGIN
     executablestatements
     EXCEPTION
     exception-handlingstatements
     END;
    2)自治事务:
     自治事务是由其它事务发起的独立事务。也就是说,自治事务也许会执行多个DML语句,并且提交或者回滚操作,
     而不会提交或者回滚主事各执行的DML语句。
     为定义一个自治事务,需要使用AUTONOMOUS_TRANSACTION编绎指令。即使用其的方法为:
     DECLARE
     PRAGMAAUTONOMOUS_TRANSACTION;
    20.记录
    1)记录类型
     a)基于表和基于游标的记录
     使用%ROWTYPE属性,可以创建基于表和基于游标的事记录。这个属性类似于用于定义标量的%TYPE
     b)用户自己定义的游标
     创建用户自己定义记录的通用语法如下:
     TYPEtype_nameISRECORD
     (field_name1datatype1[NOTNULL][:=DEFAULTEXPRESSION],
     field_name2datatype2[NOTNULL][:=DEFAULTEXPRESSION],
     .....
     field_nameNdatatypeN[NOTNULL][:=DEFAULTEXPRESSION]);
     record_nameTYPE_NAME;
    2)嵌套记录
     一些记录中包含其它记录和集合
     示例:
     DECLARE
     TYPEname_typeISRECORD
     {first_nameVARCHAR2(20),
     last_nameVARCHAR2(20));
     TYPEperson_typeis
     {namename_type,
     streetVARCHAR2(50),
     cityVARCHAR2(20),
     zipVARCHAR2(20));
    
     person_recpreson_type;
     END;
    21.过程
    1)创建过程:
     CREATEORREPLACEPROCEDUREname
     [(parameter[,parameter,....)]
     AS
     [localdeclarations]
     BEGIN
     executablestatementss
     [EXCEPTION
     execptionhandlers]
     END[name];
    2)过程传入和传出参数
     IN给程序传值 用法:只读的值
     OUT从程序返回的值,必须是变量用法:只写的值
     INOUT传入值,也从程序返回 用法:必须是变量
    22.函数
    基本语法:
     CREATE[ORREPLACE]FUNCTIONfunction_name
     (parameterlist)
     RETURNdatatype
     IS
     BEGIN
    
     RE
    TRUN(return_value);
     END;
    
    
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师