1.变量
v_name varchar2 := '你好呀' ;
c_name constant number := 10;
v_char emp.empno%type ;
v_emp emp%rowtype
2.三段式格式
declare
变量声明
begin
流程控制语句
输入输出函数
。。。
end;
3.动态sql
与用户进行交互,常与DDL,DML,单行查询语句配合进行使用
declare
v_name varchar2 := '&输入名字 ' --声明一个字符类型的变量 并将用户输入的信息赋给v_name
v_sal number;
begin
execute immediate 'select sal from emp where ename=:a ' into v_sal using v_name;
-- 动态执行语句 将查找到的sal数值 赋值给v_sal, :a是占位符 ,:后面可以随便写,将v_name的值传入这个占位符
end;
4. 游标
存储多行数据,分为显式游标与隐式游标 ,显式游标又分为动态游标与静态游标,动态游标可分别存储多张表的数据,而静态游标只可以存储一张表的数据;
根据实际情况,我们使用的大多数都是显式游标,因为隐式游标是oracle自己操作的(常见的DDL,DMLSELECT INTO 语句常伴随隐式游标),然后判断是采用动态游标还是静态游标。只要是游标,都要先声明,后需要打开,取值,关闭游标。
静态游标
declare
cursor emp_cursor(游标名) is select * from emp; 声明游标,并且赋值
v_emp emp%rowtype;
begin
open emp_cursor; --打开游标
fetch emp_cursor into v_emp; --取出游标中的第一行数据赋值给v_emp
while emp_cursor%found loop
dbms_output.put_line(v_emp.sal);
fetch emp_cursor into v_emp; --取下一行
end loop; --结束循环
close emp_cursor ; --关闭游标
end;
动态游标
declare
--先声明动态游标的类型
type dt_cursor(类型名) is ref cursor
--声明游标
emp_cursor dt_cursor;
begin
--动态游标,不能使用for循环
open cur_dept for select * from dept;
。。。。
记得关游标哦
end;