Oracle数据库程序设计学习笔记

1.PLSQL游标与判断、循环语句块。

游标的使用方法:

第一步:声明游标

第二步:打开游标

第三步:使用游标进行循环操作

第四步:关闭游标
 
oracle中游标的属性:
%NOTFOUND
%FOUND
%ISOPEN
%ROWCOUNT

一般情况下游标的使用:
declare
	cursor c is select * from dept;
	vDept_row_record c%rowtype;
begin
	open c;
	fetch c into vDept_row_record;
	dbms_output.put_line(vDept_row_record.dname);
	close c;
end;

 
  
 
  
When循环游标(举例):
declare 
 empname emp.ename%type;
 empsal emp.sal%type;
 cursor mycur is select ename,sal from emp where deptno=30;
   begin
	open mycur;
	loop
		fetch mycur into empname,empsal;--把游标所指的纪录放到变量中
		exit when mycur%notfound;--当游标没有指向行时退出循环
		dbms_output.put_line(''||empname||'工资'||empsal);
	end loop;
        close mycur;
    end;


While循环游标(举例):
declare
	cursor c is select * from dept;
	vDept_row_record c%rowtype;
begin
	open c;
	fetch c into vDept_row_record;
	While(c%found) loop
	dbms_output.put_line(vDept_row_record.dname);
	fetch c into vDept_row_record;
	end loop;
	close c;
end;
for循环游标(举例):
declare
	cursor c is select * from dept;
	vDept_row_record c%rowtype;
begin
	open c;
	fetch c into vDept_row_record;
	for vDept_row_record in c loop
	dbms_output.put_line(vDept_row_record.dname);
	end loop;
	close c;
end;

a.要更新游标结果集中当前行应使用where current of子句。
b.用于处理得到单行查询结果的游标是隐视游标。

2.PLSQL合并数据

Merge命令可以把一个表中(table1)的数据合并到另一个表(table2)中,根据条件判断,如果tabel2表中已经存在相同条件的记录,则执行update命令修改table2表中与tabel不同的字段值;如果tabel2表中不存在相同条件的记录,则执行insert命令将tabel1表中数据插入table2中.

 

将test1表中所有数据备份到test2表中:

Merge into test2 using test1 

on (test1.eid=test2.eid)

When matched then

Update set name=test1.name,birth=test1.birth,salary=test.salary 

When not matched then

Insert(eid,name,birth,salary) values (test1.eid,test1.name,test1.birth,test1.salary)

 


3.PLSQL语句块和变量定义

1.常用类型定义

sNum number(1);

sCount binary_integer:=0;

sSal number(7,2):=5000.00;

sDate date:=sysdate;

sPI number(3,2):=3.14;

sValid boolean:=true;

sName varchar2(20):='Bushit';

2.标识符

标识符——标识符必须以字母开头;名称中可以包含$、#、_、以及全部数字字符;不可以使用oracle关键字。

默认情况下:sqlserver null+A=null

     Oracle null||A=A

3.PLSQL使用查询语句

Select field_name into variable_name from table_name

--sql语句完成变量赋值

declare

  v$sal emp.sal%type;//v$sal emp.sal%rowtype

  v$ename emp.ename%type;

begin

  select sal, ename into v$sal, v$ename from emp where rownum = 1;

  dbms_output.put_line(v$sal || ' ' || v$ename);

end;  

4.PLSQL if和case用法

--if 语句

declare

     vSal emp.sal%type;

begin

  select sal into vSal from emp where empno = 7566;

  if (vSal < 1200) then

    dbms_output.put_line('小于1200');

  elsif (vSal < 2000) then

    dbms_output.put_line('小于2000');

  else

    dbms_output.put_line('大于2000');

  end if;

end; 

--case语句

Declare

vSal emp.sal%type;

Begin

Select sal into vSal from emp where empno=7566;

Case

When vSal<1200 then dbms_output.put_line('小于1200');

When vSal<2000 then dbms_output.put_line('小于2000');

Else dbms_output.put_line('大于2000');

End case;

End;



 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  

部分资源来自这里点击打开链接


你可能感兴趣的:(oracle,数据库)