oracle 变量的使用

//oralce定义标量(scalar)
declare v_name varchar(20); //定义一个varchar长度20的变量
declare v_number number(5,2); //定义一个number长度5,精度2的变量
declare v_no number(5,2):=999.99; //定义一个number长度5,精度2的变量,并附值999.99
declare date;//定义一个date日期类型
declare flag boolean not null default false;//定义一个boolean类型,不能为空,默认值是false

//oracle定义pl/sql复合类型变量(composite)
//表示定义一个user_record_type的类型,这个类型有name和pass二个字段,
//并且类型和name和user.username一样,pass和user.password一样

declear 
type user_record_type is record(name user.username%type,pass  user.password%type);
sp_record    user_record_type;  //这句话的意思是定义一个sp_record的 变量类型是user_record_type
--复合变量使用
begin
 --执行部分
select username,passowrd into sp_record where usernaem='zhangsan';
--得到记录
      dbms_output.put_line('名字'||sp_record.name||' 密码'||sp_record.pass); --得到值
end;

//oracle定义pl/sql复合类型表变量(composite)
//表示定义一个user_table_type的类型
//并且只有一个字段,类型和user.username一样,索引index是整数								
declear 
type user_table_type is table of   user.username%type,user.password%type  index by binary_integer;
sp_table    user_table_type;  //这句话的意思是定义一个sp_record的 变量类型是user_record_type
--复合变量使用
begin
 --执行部分
select username,password into sp_table[0],sp_table[1] where id<=&id;
--得到记录 sp_table[0的下标可以是负数,但是取值和赋值一样,不然会报错
dbms_output.put_line('名字'|sp_table[0]||'密码'||sp_table[1]); 
--sp_table[0]表示所有返回的name数组
--sp_table[1]表示所有返回的password数组
end;

//oracle使用一个游标类型
declare
--定义一个游标,名字是sp_user_cursor
 type sp_user_cursor if ref cursor; 
 --定义一个游标
 sp_user    sp_user_cursor;
 --定义两个变量,等循环用
 v_username user.usernaem%type;
 v_password user.password%type;
 begin;
      --执行部分
      open  sp_user for select username,password from user;
      --取出数据
      loop
	fetch  sp_user into v_username,	 v_password ;

	--判断sp_user是否为空,问空时就退出
	 exit when sp_user$notfound then

	 --控制台输出
	 dbms_output.put_line('名字'||v_username||'密码 '||v_password); 
      end loop;
      --关闭游标
      close  sp_user;
 end;
 

猜你喜欢

转载自javaeedevelop.iteye.com/blog/1549527