PL/SQL编程基础简介及实践(2)

--定义省份、城市、区域编号记录表对象
type base_info_type is record(
 province base_info.province%type,
 city base_info.city%type,
 district base_info.district%type);

sp_record base_info_type;

begin
 id := sys_guid();
--查询出关联的省份编号、城市编号、区域编号信息
select province, city, district
 into sp_record
 from base_info bi
 where bi.store_id = 'storeId ′ ;−−更新省份编号、城市编号、区域编号信息updatetest h ousefohsetfoh.province=sp r ecord.province,foh.city=sp r ecord.city,foh.region=sp r ecord.district,foh.address= ′ 商务路 ′ ||lpad(abs(dbms r andom.random),4,dbms r andom.string( ′ x ′ ,2))wherefoh.order i d= ′  storeId′;−−更新省份编号、城市编号、区域编号信息updatetesthousefohsetfoh.province=sprecord.province,foh.city=sprecord.city,foh.region=sprecord.district,foh.address=′商务路′||lpad(abs(dbmsrandom.random),4,dbmsrandom.string(′x′,2))wherefoh.orderid=′{orderId}';
 commit;
end;

2)数组类型:具有相同数据类型的记录的集合。
type array_name is varray(size) of elementType [not null];
array_name:数组类型名称 size:元素的大小 elementType:数据类型
--位置从1开始
declare
 type city_array is varray(3) of varchar2(10);
 v_city_array city_array;
begin
 v_city_array := city_array('北京市', '上海市', '深圳市');
dbms_output.put_line('第3个城市名称 =' || v_city_array(3));
end;

1、绑定变量:使用variable来定义
variable return_cityId number;

SQL> variable returnValue number;
SQL> begin
 2 select 3*6 into :returnValue from dual;
 3 end;
 4 /
PL/SQL procedure successfully completed
returnValue
---------
18
SQL> print returnValue;
returnValue
---------

3)表类型:定义记录表(或索引表)数据类型。它与记录类型相似,但它是对记录类型的扩展。它可以处理多行记录,类似于高级中的二维数组,使得可以在pl/sql中模仿其他数据库中的表。
type table is table of elementType [not null]
index by [binary_integer | pls_integer |varray2]
关键字index by表示创建一个主键索引,以便引用记录表变量中的特定行
--按一维数组使用记录表的示例
declare
 type city_table is table of varchar2(20) index by binary_integer;
 v_city_table city_table;
begin
 v_city_table(1) := '北京市 ';
v_city_table(2) := ' 深圳市 ';
dbms_output.put_line(' 第2个城市名称 = ' || v_city_table(2));
end;

--按二维数组使用记录表的示例
declare
type bse_city_table is table of test_city%rowtype index by binary_integer;
v_bse_city_table bse_city_table;
begin
 select city_id, city_name
 into v_bse_city_table(1).city_id,v_bse_city_table(1).city_name
 from test_city bc
 where bc.p_city_id = '020'
 and rownum = 1;
 select city_id, city_name
 into v_bse_city_table(2).city_id,v_bse_city_table(2).city_name
 from test_city bc
 where bc.p_city_id = '0755'
 and rownum = 1;
 dbms_output.put_line('记录1中区域编号=' || v_bse_city_table(1).city_id ||
 '_记录1中区域名称=' || v_bse_city_table(1).city_name);
 dbms_output.put_line('记录1中区域编号=' || v_bse_city_table(2).city_id ||
 '_记录1中区域名称=' || v_bse_city_table(2).city_name);
end;

8、运算符
1、关系运算符:
=、<> ~= != ^= 、>、>=、<、<=
2、一般运算符:
+、-、*、/、:=(赋值号)、..(范围运算符)、||、=>(关系号)
3、逻辑运算符:
is null、in、and、or、not、between and
4、注意事项:
1)变量赋值:先声明再赋值。
v_storePhone varchar2(11); --手机号码
v_storePhone := '158' || lpad(abs(dbms_random.random), 8, 0);
2)null+数字 为null,null||字符串 为字符串
3)boolean类型的值只能取 true false null3个值

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a01f8bfbf76046f959ee1e5e1c78a904.html