06—PL/SQL编程
PL/SQL: Oracle中的SQL过程化编程语言
1. PL/SQL程序是由块结构构成,格式如下:
[DECLARE
--声明部分
]
BEGIN
-- 主体
[EXCEPTION
-- 异常处理块
]
END;
/ --块的结束
2.变量
简单变量:单值变量
变量名 变量类型[:=初始值];
复合变量:先定义复合类型,然后再用来复合变量;
表类型: TYPE 类型名 IS TABLE OF 数据类型 INDEX BY BINARY_INTEGER;
变量名 表类型名;
记录类型:TYPE 类型名 IS RECORD(变量名 类型, 变量名 类型...);
声明变量的类型与指定表的指定列同类型:
变量名 表名.列名%TYPE;
声明记录类型变量的类型与指定表的行同类型:
变量名 表名%ROWTYPE;
3.条件语句
IF 条件 THEN 语句;
ELSIF 条件2 THEN 语句2;
ELSIF 条件2 THEN 语句2;
ELSE 语句n;
END IF;
4.循环语句
1) 简单:
LOOP
语句
EXIT WHEN 条件;
END LOOP;
2) WHILE:
WHILE 条件 LOOP
语句
END LOOP;
3) FOR
FOR 数字变量 IN [REVERSE] 下限..上限 LOOP
语句
END LOOP;
5. 游标cursor:它是Oracle数据库内的一个工作区,存放了SELECT语句的查询集。
1) 它有一个指针,初始时指向查询集中的首行。
2) 属性:%found、%notfound、%rowcount、%isopen、
3) 使用步骤:
a) 声明变量用来保存数据。
b) 声明游标,并指定查询。cursor v_emp_cursor is select语句;
c) 打开游标。open v_emp_cursor;
d) 一次从游标中获取一行记录。fetch v_emp_cursor into 变量列表;
e) 关闭游标。close v_emp_cursor;
4) for循环可以自动完成打开,获取数据,关闭的功能。
declare
v_
相关文档:
(1)char、varchar、text和nchar、nvarchar、ntext
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变 ......
数据库行转列的sql语句
问题描述
假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
现在 想写 sql 语句 查询后结果 为
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82& ......
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- --- ......
第二十题:
怎么样抽取重复记录
表:
id name
--------
1 test1
2 test2
3 test3
4 test4
5 test5
6 test6
2 test2
3 test3
2 test2
6 test6
查出所有有重复记录的数据,用一句sql 来实现
create table D(
id varchar (20),
name varchar (20)
)
insert into D values('1','test1')
insert into D v ......