1.基本语法
–执行该句才会输出到控制台
set serveroutput on
declare --声明的变量、类型和游标 begin --程序的执行部门(类似于java中的main方法) dbms_output.put_line('helloworld');//直接输出到控制台 exception --针对begin块中出现的异常如何处理 --when...then... --when...then... --end;
memo1:
declare --声明变量 --v_sal number(10,2) := 0 --[使用:=进行赋值操作,使用=进行比较操作]; v_sal employees.salary%type;--动态获取数据类型 v_email varchar2(20); v_hire_date date; begin --sql语句的操作:select...into...from...where select salary,email,hire_date into v_sal,v_email,v_hire_date from employees where employee_id = 100; --打印 dbms_output.put_line(v_sal||','||v_email||','||to_char(v_hire_date,'yyyy-mm-dd')); end;
2.记录类型
declare --声明记录类型 type emp_record is record( v_sal employees.salary%type,--动态获取数据类型 v_email varchar2(20),//注意是逗号,最后一行不加 v_hire_date date ); --定义一个记录类型的成员变量 v_emp_record emp_record;//类似于java中类与成员变量的关系 【--以employees表中的所有的列定义记录类型 --v_emp_record employees%rowtype;】 begin --sql语句的操作:select...into...from...where select salary,email,hire_date into v_emp_record from employees where employee_id = 100; --打印 dbms_output.put_line(v_emp_record.v_sal||','||v_emp_record.v_email||','||to_char(v_emp_record.v_hire_date,'yyyy-mm-dd')); end; --------------memo2-修改----------------------- declare v_emp_id number(10); begin v_emp_id := 123;--进行赋值操作 update employees set salart = salart+100 where employee_id = v_emp_id;--这里是“=” dbms_output.put_line('执行成功') end;
3.游标与记录类型综合
declare --声明一个记录类型 type emp_record is record( v_sal employees.salary%type, v_empid employees.employee_id%type ); --声明一个记录类型的变量 v_emp_record emp_record; --定义游标 cursor emp_sal_cursor is select salary ,employee_id from employees where department_id = 80; begin --打开游标 open emp_sal_cursor; --提取游标 fetch emp_sal_cursor into v_emp_record; while emp_sal_cursor % found loop dbms_output.put_line('emp_id :'||v_emp_record.v_empid||','||'salary :'||v_emp_record.v_sal); fetch emp_sal_cursor into v_emp_record; end loop; --关闭游标 close emp_sal_cursor; end;