PL/SQL编程
基本语言风格
PL/SQL把SQL的数据操作功能同过程语言的数据处理功能结合起来。
|
--声明作用 declare --变量、游标、用户自定义类型、异常 variables,cursors,user_defined,exceptione --程序开始 begin -SQL statements -PL/SQL statements --异常处理 EXCEPTION Actions to perform when errors occur --程序结束标志 end; |
1. 构成PL/SQL的基本单元:过程,函数,其他模块
2. 变量声明和异常处理是可选项,程序过程是必须的
字符集和注释
字符集包括:
1、所有大小写字母
2、0~9的数字
3、(){} +、-、*、%等一些特殊字符
4、空格符、制表符、回车符
单行注释:
|
--声明作用 declare --变量、游标、用户自定义类型、异常 variables,cursors,user_defined,exceptione --程序开始 begin -SQL statements -PL/SQL statements --异常处理 EXCEPTION Actions to perform when errors occur --程序结束标志 end; |
多行注释:不允许嵌套使用
|
/* declare variables,cursors,user_defined,exceptione begin -SQL statements -PL/SQL statements EXCEPTION Actions to perform when errors occur end; */ |
数据类型和转换
常用数据类型:
数字类型:Number、PLS_Integer、BINARY_Integer
字符类型:Char、Varchar2、Long、Nchar2、Nvarchar2
日期类型:Date、TimeStamp、Interval
布尔类型:Boolean
LOB类型:blob、long、raw、
类型转换
To_char():把Number和date类型转换为varchar2()类型
To_date():把char类型转换为Date类型
To_number():把char类型转换为number类型
自动类型转换:字符和数字,字符和日期
|
自动类型转换:Max结果是Number类型,这里就转换为varchar2类型 declare v_customer_id varchar2(10); begin select Max(CUST_ID) INTO v_customer_id from customers where CUST_FIRST_NAME='Anne'; end;
手动类型转换 declare v_customer_id varchar2(10); begin select to_char(Max(CUST_ID)) INTO v_customer_id from customers where CUST_FIRST_NAME='Anne'; end; |
变量和常量
变量就是程序读取和赋值的存储单元。
v_customer_id varchar2(10);
v_name varchar2(20);
v_date Date;
常量就是在前面加上constant修饰,并且赋值即可。
limit_connect constant numb:=50000;
运算符
算术运算符
|
+-正负 |
+加号 |
-减号 |
*乘号 |
/出号 |
**幂 |
关系运算符
|
<>不等于 |
!=不等于 |
^=不等于 |
>大于 |
<小于 |
=等于 |
其他运算符
|
not |
and |
or |
/**/ |
-- |
:=赋值 |
‘字符界 |
; |
流程控制
IF_THEN_ELSE语句
|
declare v_number sales.prod_id%type; v_comment varchar2(35); begin /*对prod_id判断*/ select max(prod_id) into v_number from sales; if v_number<500 then v_comment:='Too Small'; elsif v_number<1000 then v_comment:='Litter Bigger'; else v_comment:='That enough'; end if; end; |
CASE语句
|
declare v_first_name customer.customer first_name%type; v_result varchar2(20) begin --从数据库中取出要判断的值 select customer_first_name into v_first_name from customer where c_id=100; --判断v_first_name的值,获得结果 case v_first_name when 'Anne' then v_result:='IS Anne'; when 'Fire' then v_result:='IS Fire'; else v_result:='Nothing'; end CASE; end; |
FOR_LOOP语句
|
declare v_counter binary_integer:=1; begin for v_counter in 1..19 LOOP --满足条件要执行的SQL语句 insert into number_table(num) values (v_counter); end LOOP; END; |
WHILE_LOOP
|
declare v_counter binary_integer:=1; begin WHILE v_counter<20 LOOP --满足条件要执行的SQL语句 insert into number_table(num) values (v_counter); end LOOP; END; |
GOTO顺序控制
goto lable;label是指<<>>括起来的标记
|
declare v_counter binary_integer:=1; LOOP INSERT INTO number_table(num) values (v_counter); v_counter:=v_counter+1; --v_counter:=20的时退出去 if v_counter=20 then goto loop_end; end if; end LOOP; <<loop_end>> END; |
1251



被折叠的 条评论
为什么被折叠?



