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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐