PL/SQL笔记(一)

读了本PL/SQL,抄了点代码。

1.根据姓名查询作家,如果是女滴,就查询发表文章的数量。

DECLARE
	v_Sex NUMBER;
	v_AuthorCode CHAR(6);
	v_Arcount NUMBER;
BEGIN
	select author_code,sex
	into v_AuthorCode, v_Sex
	from auths
	where name='王达琳';

	IF v_Sex = 0 THEN
		select count(article_code)
		into v_Arcount
		from article
		where author_code = v_AuthorCode;
	END IF;
END;

 2.声明PLSQL变量

DECLARE
	v_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, 并同时给它一个值,这民后就不能再给常量进行赋值了。

declare
	sex_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表中

declare
	v_LoopCounter binary_integer := 1;
begin
	loop
		insert into table_a(num_col)
		values (v_LoopCounter);
		v_Loopcounter := v_LoopCounter + 1;
		exit when v_LoopCounter > 100;
	end loop;
end;

 

For循环实现相同的功能

declare
	v_LoopCounter binary_integer := 1;
begin
	for v_LoopCounter in 1..50 loop
		insert into table_a(num_col)
		values (v_LoopCounter);
	end loop;
end;

 

7.游标

游标用来查询数据库中的数据(例如select语句返回的记录),并对查询结果进行处理。游标分“显示”和“隐式”。通过游标,可对查询结果中的数据一条条进行处理。

下例中,通过游标查询数据库表auths中所有作家的姓名和工资,并将每条记录的值依次传给变量v_Name和v_Salary

declare
	v_Name varchar2(10);
	v_Salary number(8,2);
	--游标定义
	cursor c_auths is 
		select name, salary
		from auths;
begin
	open 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关键字限制的变量

 

你可能感兴趣的:(数据结构,sql,C++,c,C#)