//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;