declare
variabledefine
………
begin
statement
……
end
<<identifier1>>
declare
variable define
begin
….
<<indentifer2>>
declare
….
begin
…
end;
…
end;
create or replaceprocedure proName
(
Name1 in outtype,
Name2 in out type,
...
)
is
variable define;
….
begin
statement;
………
end proName;
create or replace function
funcName
(
Name1 in out type,
Name2in out type,
...
)
return type
is
result type;
variable define;
….
begin
statement;
………
return result;
end proName;
createor replace
package packName
is
变量,常量,函数, 过程 定义
end;
createor replace
bodypackName is
函数,过程的实现
end;
create or replacetigger tiggName
after/before insert/update/delete On tablename
for each row
……….
begin
statement
end;
boolean …..
Record相当与c语言中的结构,可以有多个成员组成
Table相当于数组,但是table没有个数限制即下标没有限制且下标可以为负数
varray类似于高级语言的数组,元素的个数有限制
类似于高级语言的指针用于共享变量。如ref cursor
用于存储和处理大批量数据的变量,……
Bulk collect为批量查询能用一条select语句获取多行数据存入一个数组或表中。
Delete 删除表中数据但是不释放表段所占的空间,能对该操作回退;Truncate删除一个表中的数据同时释放表段所占的空间,但是不支持回退
同一张表之间的连接查询,主要用于在参照表上显示 ,上下级关系或层次关系。
select t1.col_name, t2.col_name from table1 t1 innerjoin table1 t2 on t1.col_name= t2.col_name
多个表中具有共同的列,通过共同列进行联结
SELECT tab_name1.col_name,tab_name2.col_name….FROM tab_name1, tab_name2
wheretab_name1.col = tab_name2.col
左外联结
返回满足连接条件的所有行,而且还会返回不满足连接条件的连接操作符的左边表的其他行
SELECT tab_name1.col_name,tab_name2.col_name….FROM tab_name1 LEFT JOIN tab_name2 ONtab_name1.col = tab_name2.col
Select tab_name1.col_name,tab_name2.col_name….FROM tab_name1, tab_name2 where tab_name1.col=tab_name2.col(+);
右外联结
返回满足连接条件的所有行,而且还会返回不满足连接条件的连接操作符的左边表的其他行
SELECT tab_name1.col_name,tab_name2.col_name….FROM tab_name1 RIGHT JOIN tab_name2ON tab_name1.col = tab_name2.col
Select tab_name1.col_name,tab_name2.col_name….FROM tab_name1, tab_name2 where tab_name1.col(+)=tab_name2.col;
全外联结
仅返回满足连接条件的所有行,而且还会返回不满足连接条件的所有行
SELECT tab_name1.col_name,tab_name2.col_name…FROM tab_name1 FULL JOIN tab_name2 ON tab_name1.col = tab_name2.col;
Selecttab_name1.col_name,tab_name2.col_name….FROM tab_name1, tab_name2 where tab_name1.col=tab_name2.col(+)
Union
Selecttab_name1.col_name,tab_name2.col_name….FROM tab_name1, tab_name2 where tab_name1.col(+)=tab_name2.col;
If 条件 then
执行
[elsif 条件 then
执行]
[else
执行]
end if;
case var
when expr1 then
执行
….
[else (以上条件都不满足) 执行]
end case;
case
when var<expr1 then
执行
….
[else (以上条件都不满足) 执行]
end case;
loop
…
exit whencondition = true
…
end loop;
while condition=true loop
…..
end loop;
for iin low…up loop
…..
end loop;
forall i in [low…up][indices of collection][values of collection]
statement
批量的进行增删改操作
…..
Goto<<lablename>>
……
<<lablename>>
Statement/NULL;
<<lablename>>后面必须接执行语句或者NULL