plsql

PL/SQL

PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

  • SQL是一种集合性语言
  • PL/SQL语句效率比SQL低,尽量用SQL。

PL/SQL循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> create table t(id int);

表已创建。

SQL> begin
2 for i in 1..100 loop
3 insert into t values(i);
4 end loop;
5 end;
6 /

PL/SQL 过程已成功完成。

SQL> select count(*) from t;

COUNT(*)
----------
100

SQL> commit;

提交完成。

PL/SQL变量

首先看看sql内置的数据类型

数据类型 长度 说明
CHAR(n BYTE/CHAR) 默认1字节,n值最大为2000 末尾填充空格以达到指定长度,超过最大长度报错。默认指定长度为字节数,字符长度可以从1字节到四字节。
NCHAR(n) 默认1字符,最大存储内容2000字节 末尾填充空格以达到指定长度,n为Unicode字符数。默认为1字节。
NVARCHAR2(n) 最大长度必须指定,最大存储内容4000字节 变长类型。n为Unicode字符数
VARCHAR2(n BYTE/CHAR) 最大长度必须指定,至少为1字节或者1字符,n值最大为4000 变长类型。超过最大长度报错。默认存储的是长度为0的字符串。
VARCHAR 同VARCHAR2 不建议使用
NUMBER(p[,s]) 1-22字节。P取值范围1到38。S取值范围-84到127 存储定点数,值的绝对值范围为1.0 x 10 -130至1.0 x 10 126。值大于等于1.0 x 10 126时报错。p为有意义的10进制位数,正值s为小数位数,负值s表示四舍五
BINARY_FLOAT 5字节,其中有一长度字节。 32位单精度浮点数类型。符号位1位,指数位8位,尾数位23
BINARY_DOUBLE 9字节,其中有一长度字节。 64位双精度浮点数类型。

具体变量声明参见一下链接:https://blog.csdn.net/wang_zhou_jian/article/details/5693219

例、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SQL> declare
2 a number(10):=10;
3 begin
4 for i in 1..a loop
5 insert into t values(i);
6
7 end loop;
8 end;
9 /

PL/SQL 过程已成功完成。

SQL> select * from t;

ID
----------
1
2
3
4
5
6
7
8
9
10
捐赠:喜欢就请我喝一杯
0%