just4you 发表于 2013-1-27 05:11:53

PL/SQL笔记(一)

读了本PL/SQL,抄了点代码。
1.根据姓名查询作家,如果是女滴,就查询发表文章的数量。
DECLAREv_Sex NUMBER;v_AuthorCode CHAR(6);v_Arcount NUMBER;BEGINselect author_code,sexinto v_AuthorCode, v_Sexfrom authswhere name='王达琳';IF v_Sex = 0 THENselect count(article_code)into v_Arcountfrom articlewhere author_code = v_AuthorCode;END IF;END; 2.声明PLSQL变量
DECLAREv_Name varchar2(10);v_CurrentDate DATE;v_Salary NUMBER(8,2);v_LoopCounter BINARY_INTEGER;v_CurrentlyRegistered BOOLEAN; 3.创建PL/SQL用户自定义类型(例如:PL/SQL表和记录)
DECLARE--创建一个记录类型TYPE Au_Record IS RECORD(Author_code char(6),Name varchar2(10),sex NUMBER(1));--声明一个Au_Record记录类型的变量v_Author Au_Record; 4.创建对象类型,可以存储在数据库表中
create or replace type AuthorOb as object(--创建一个对象类型Author_code char(6),Name varchar2(10),Sex number(1),birthdate date,address varchar2(30)), 5.定义常量
常量定义与变量的定义类似,只是在定义时必须增加一个关键字constant, 并同时给它一个值,这民后就不能再给常量进行赋值了。
declaresex_male constant int := 1;sex_female constant int := 0; 6.循环
有数据表结构为:
create table Table_A(num_col number,char_col varchar2(60)); 循环将数字1到100插入到table_a表中
declarev_LoopCounter binary_integer := 1;beginloopinsert into table_a(num_col)values (v_LoopCounter);v_Loopcounter := v_LoopCounter + 1;exit when v_LoopCounter > 100;end loop;end; 
For循环实现相同的功能
declarev_LoopCounter binary_integer := 1;beginfor v_LoopCounter in 1..50 loopinsert into table_a(num_col)values (v_LoopCounter);end loop;end; 
7.游标
游标用来查询数据库中的数据(例如select语句返回的记录),并对查询结果进行处理。游标分“显示”和“隐式”。通过游标,可对查询结果中的数据一条条进行处理。
下例中,通过游标查询数据库表auths中所有作家的姓名和工资,并将每条记录的值依次传给变量v_Name和v_Salary
declarev_Name varchar2(10);v_Salary number(8,2);--游标定义cursor c_auths is select name, salaryfrom auths;beginopen c_auths;loop--检索一条记录fetch c_auths into v_Name, v_Salary;--当所有的记录都被检索出后退出循环exit when c_auths%notfound;/*对检索出的数据进行处理*/end loop;--结束处理,关闭游标close c_auths;end; 
8.块
组成PL/SQL程序的基本单元,一个块可嵌套多个子块。一般一个块用来解决一个问题或一个子问题。
标准的块由如下三个独立部分组成:
定义部分(可有可无):声明块中所用到的变量,游标,类型。也可声明局部的存储过程和函数。这些过程和函数只在定义它的块中有效。
执行部分(必须):由SQL语句和过程性语句构成。
异常处理部分(可有可无):处理程序中的错误。错误发生时执行。在PLSQL中,警告或错误信息被称为异常。
结构一:declare定义部分begin可执行部分,在块中必不可少exception异常部分end;结构二:begin可执行部分end;结构三:declare定义部分begin可执行部分end;结构四:begin可执行部分exception异常处理部分end; 9.变量标识符
字母开头,不超过30字符,不能有空格。
带引号的标识符可以有空格,引号不算在30个字符内。
declare"author's age" number;begin"author's age" := 21;DBMS_OUTPUT.PUT_LINE("author's age");end;变量名不能是保留字。
如果使用带绰号的标识符,则可以使用保留字。
declare"LOOP" number; 
10.变量命名习惯
v_variableName 程序变量e_exceptionName 用户自定义异常t_typeName 用户自定义类型变量p_parameterName 存储过程或函数参数变量c_constantValue 用constant关键字限制的变量 
页: [1]
查看完整版本: PL/SQL笔记(一)