ITPub博客

首页 > 数据库 > Oracle > oracle开发学习篇 可变数组

oracle开发学习篇 可变数组

原创 Oracle 作者:zhangxiaocen 时间:2015-02-11 23:34:16 0 删除 编辑

点击(此处)折叠或打开

  1. 定义简单类型的可变数组;
  2. create or replace type project_varray AS VARRAY(3) OF varchar2(50);
  3. /
  4. drop table department purge;
  5. create table department(
  6.     did             number,
  7.     deptname         varchar2(50) NOT null,
  8.     projects         project_varray
  9. );

  10. insert into department (did,deptname,projects) values(10,\'\',
  11. project_varray(\'aaa\',\'bbb\',\'ccc\'));
  12. insert into department(did,deptname,projects) values(20,\'\',
  13. project_varray(\'<<>>\',\'<>\'));
  14. commit;

  15. select * from table (
  16. select projects from department where did=20
  17. );

  18. update department set projects = project_varray(\'\',
  19. \'<>\',\'<<.inputColumName>>\') where
  20. did = 20 ;
  21. commit;





  22. 定义复合类型的可变数组;
  23. drop type project_nested;
  24. drop table department purge;
  25. create or replace type project_type AS object(
  26.     projectid         number,
  27.     projectname     varchar2(50),
  28.      projectfunds     number,
  29.      pubdate         DATE
  30. );
  31. /

  32. create or replace type project_varray AS VARRAY(3) OF project_type;
  33. /

  34. create table department(
  35.     did             number,
  36.     deptname         varchar2(50) NOT null,
  37.     projects         project_varray,
  38.     CONSTRAINT pk_did primary key(did)
  39. );
  40. commit;
  41. insert into department(did,deptname,projects) values(10,\'shanghai\',
  42.     project_varray(
  43.             project_type(10,\'ERP master System\',100,TO_DATE(\'2015-07-01\',\'yyyy-mm-dd\')),
  44.             project_type(20,\'CRM Client System\',1000,TO_DATE(\'2015-06-10\',\'yyyy-mm-dd\'))
  45. ));
  46. commit;
  47. insert into department(did,deptname,projects) values(20,\'beijing\',
  48.     project_varray(
  49.             project_type(11,\'<>\',1000,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\')),
  50.             project_type(12,\'<<.inputColumName>>\',1000,TO_DATE(\'2014-03-01\',\'yyyy-mm-dd\')),
  51.             project_type(13,\'<>\',10000,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\'))
  52.             ));
  53. commit;


  54. update department set projects=project_varray(
  55.             project_type(11,\'<>\',100660,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\')),
  56.             project_type(12,\'<<.inputColumName.cn>>\',106600,TO_DATE(\'2014-03-01\',\'yyyy-mm-dd\')),
  57.             project_type(13,\'<>\',1006600,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\'))
  58.         )
  59. where did = 20;
  60. commit;


  61. PL/SQL中定义简单可变数组
  62. declare
  63.          type project_varray is VARRAY(3) OF varchar2(50);
  64.         v_projects project_varray := project_varray(null,null,null);
  65. begin
  66.         v_projects(1) := \'java se\';
  67.         v_projects(2) := \'oracle se\';
  68.         v_projects(3) := \'ANALYST\';
  69.     for x in v_projects.first .. v_projects.last loop
  70.         dbms_output.put_line(v_projects(x));
  71.         end loop;
  72.     end;
  73. /




  74. PL/SQL定义复合可变数组
  75. drop type project_varray;
  76. drop table department purge;
  77. create or replace type project_type AS object(
  78.     projectid         number,
  79.     projectname     varchar2(50),
  80.      projectfunds     number,
  81.      pubdate         DATE
  82. );
  83. /

  84. create or replace type project_varray AS VARRAY(3) OF project_type;
  85. /


  86. declare
  87.     type project_varray is VARRAY(3) OF project_type not null;
  88.     v_projects project_varray := project_varray(
  89.         project_type(11,\'<>\',1000,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\')),
  90.             project_type(12,\'<<.inputColumName>>\',1000,TO_DATE(\'2014-03-01\',\'yyyy-mm-dd\')),
  91.             project_type(13,\'<>\',10000,TO_DATE(\'2015-02-01\',\'yyyy-mm-dd\'))
  92.         );
  93. begin
  94.         for x in v_projects.first .. v_projects.last loop
  95.             dbms_output.put_line(\'id :\' ||
  96.                 v_projects(x).projectid || \', name:\' ||
  97.                 v_projects(x).projectname || \', money:\' ||
  98.                 v_projects(x).projectfunds || \', time:\' ||
  99.                 v_projects(x).pubdate);
  100.         end loop;
  101. end;
  102. /

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29360162/viewspace-1433832/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-12-10

  • 博文量
    3
  • 访问量
    9816