读3pl-sql language reference11.2 笔记
1、 查询一次处理一行结果案例;
begin
for someone in( --someone 变量
select * from table1 --数据表
)
loop
DBMS_OUTPUT.PUT_LINE
(someone.id||' : ' ||someone.data_input
||' : ' || someone.sex ); --字段处理。
endloop;
end;
2、 定义变量用引号引起来。将不会转换为大写,直接获取相匹配的变量
true:
declare
"HELLO" varchar2(20):='hello444444444';
begin
dbms_output.put_line(Hello); --自动会变成大写去匹配
end;
false:
declare
"Hello" varchar2(20):='hello444444444';
begin
dbms_output.put_line(Hello); ---自动变成大写后没有 HELLO变量,只有---Hello 变量,错误
end;
false:
declare
"HELLO" varchar2(20):='hello444444444';
begin
dbms_output.put_line("Hello"); --寻找Hello 无,错误。
end;
3、 SQL中的变量要求:
A)、字母开头,
B)、变量后面可以包含数字,字母,和 “$”,“#”,“_” 三个特殊变量。
4、 字符是非行继续。
如:DBMS_OUTPUT.PUT_LINE(‘fdlsjfdsl
fdsjofsdf’);----将打印成两行。
所以如果需要写成两行可以用:||
如:DBMS_OUTPUT.PUT_LINE(‘fdlsjfdsl’||
‘fdsjofsdf’); ---这样就可以打印成一行。
5、 数据类型%Type 和 %ROWTYPE
如:id table1.id%Type; --表示 id变量的数据类型与表table1中id的数据类型相同。
如:table2 table1%rowtype --表示获取表table1 中的某一行
6、 变量范围:
SQL的作用范围与c语言相同,定义开始,end结束,有内部相同变量时 ,获取内部变量值。调用外边变量用outer.变量名。
如:
DECLARE
birthdate DATE := '09-AUG-70';
BEGIN
DECLARE
birthdate DATE := '29-SEP-70';
BEGIN
IF birthdate = outer.birthdate THEN
DBMS_OUTPUT.PUT_LINE ('Same Birthday');
ELSE
DBMS_OUTPUT.PUT_LINE ('Different Birthday');
ENDIF;
END;
END;
7、 数学运算:
1、**表示密乘,如:2**3==8
2、没有求与符号% 需要用mod(a,b);
8、 Subtype定义你自己的数据类型。
用法:subtype 子数据类型 is base_type;
如: subtype subnum is num(7,5);
定义:Sum1 subsum;