位置:首页 > 其它资料

c语言中table的用法有哪些

2020-02-04发布者:郝悦皓大小:94.56 KB 下载:0

c 语言中 table 的用法:RECORD 定义记录数据类型。它类似于 C 语言中的结构数据类型 (STRUCTURE)STRUCTURE),PL/SQL 提供了将几个相关的、分离的、基本数据类型的变量 组成一个整体的方法,即 RECORD 复合数据类型。在使用记录数据类型变量 时,需要在声明部分先定义记录的组成、记录的变量,然后在执行部分引用 该记录变量本身或其中的成员。 定义记录数据类型的语法如下: TYPE RECORD_NAME IS RECORD(STRUCTURE) V1 DATA_TYPE1 [NOT NULL][:=DEFAULT_VALUE], V2 DATA_TYPE2 [NOT NULL][:=DEFAULT_VALUE], VN DATA_TYPEN [NOT NULL][:=DEFAULT_VALUE]); c 语言中 table 的用法:VARRAY 数组是具有相同数据类型的一组成员的集合。每个成员都有一个唯一的 下标,它取决于成员在数组中的位置。在 PL/SQL 中,数组数据类型是 VARRAY(variable array,即可变数组)。 定义 VARRAY 数据类型的语法如下: TYPE VARRAY_NAMEIS VARRAY(STRUCTURE)SIZE) OF ELEMENT_TYPE [NOT NULL]; 其中,varray_name 是 VARRAY 数据类型的名称,size 是正整数,表示 可以容纳的成员的最大数量,每个成员的数据类型是 element_typeo 默认时 成员可以取空值,否则需要使用 NOT NULL 加以限制。 c 语言中 table 的用法:TABLE 定义记录表(或索引表)数据类型。它与记录类型相似,但它是对记录 类型的扩展。它可以处理多行记录,类似于 C 语言中的二维数组,使得可以 在 PL/SQL 中模仿数据库中的表。 定义记录表类型的语法如下: TYPE TABLE NAME IS TABLE OF ELEMENT_TYPE [NOT NULL] INDEX BY [BINARY_INTEGER|PLS_INTEGER|VARRAY2]; 关键字 INDEX BY 表示创建一个主键索引,以便引用记录表变量中的特 定行。 BINARY_INTEGER 的说明 如 语 句 : TYPE NUMBERS IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; 其 作 用 是 , 加 了 ” INDEX BYBINARY_INTEGER ” 后 , NUMBERS 类型的下标就是自增长,NUMBERS 类型在插入元素时,不需要 初始化,不需要每次 EXTEND 增加一个空间。 而如果没有这句话“INDEXBY BINARY_INTEGER”,那就得要显示对初始 化 , 且 每 插 入 一 个 元 素 到 NUMBERS 类 型 的 TABLE 中 时 , 都 需 要 先 EXTEND。 c 语言中 table 的用法:创建表结构以及数据准备 [sql] view plain copy print? 01.--组织机构结构表 02.CREATE TABLE SF_ORG 03.(STRUCTURE) 04.ORG_ID INT NOT NULL, --组织机构主键 ID 05.ORG_NAME VARCHAR2(STRUCTURE)50),--组织机构名称 06.PARENT_ID INT--组织机构的父级 07.) 08. 09.--一级组织机构 10.INSERT INTO SF_ORG(STRUCTURE)ORG_ID, ORG_NAME, '一级部门 1',0); 11. 12.--二级部门 13. 14.INSERT INTO SF_ORG(STRUCTURE)ORG_ID, ORG_NAME, '二级部门 2',1); 15.INSERT INTO SF_ORG(STRUCTURE)ORG_ID, ORG_NAME, '二级部门 3',1); 16.INSERT INTO SF_ORG(STRUCTURE)ORG_ID, ORG_NAME, '二级部门 4',1); PARENT_ID) VALUES(STRUCTURE)1, PARENT_ID) VALUES(STRUCTURE)2, PARENT_ID) VALUES(STRUCTURE)3, PARENT_ID) VALUES(STRUCTURE)4, c 语言中 table 的用法:RECORD 的使用举例 先定义一个只与 SF_ORG 表中某几个列的数据类型相同的记录数据类型 TYPE_ORG_RECORD , 然 后 声 明 一 个 该 数 据 类 型 的 记 录 变 量 V_ORG_RECORD,最后用替换变量&ORG_IDORG_ID 接受输入的雇员编码,查询并 显示该雇员的这几列中的信息。注意,在使用 RECORD 数据类型的变量时要 用“.”运算符指定记录变量名限定词。 一个记录类型的变量只能保存从数据库中查询出的一行记录,如果查询 出了多行记录,就会出现错误。 [sql] view plain copy print? 01.DECLARE 02. TYPE TYPE_ORG_RECORD IS RECORD(STRUCTURE) 03. V_ORG_NAME SF_ORG.ORG_NAME%TYPE, 04. V_PARENT_ID SF_ORG.PARENT_ID%TYPE); 05. V_ORG_RECORD TYPE_ORG_RECORD; 06.BEGIN 07. SELECT ORG_NAME,PARENT_ID INTO V_ORG_RECORD 08. FROM SF_ORG SO 09. WHERE SO.ORG_ID=&ORG_IDORG_ID; 10. DBMS_OUTPUT.PUT_LINE(STRUCTURE)' 部 门 名 称 : ' V_ORG_RECORD.V_ORG_NAME); 11. DBMS_OUTPUT.PUT_LINE(STRUCTURE)' 上 级 部 门 编 码 : ' TO_CHAR(STRUCTURE)V_ORG_RECORD.V_PARENT_ID)); 12.END; || || c 语言中 table 的用法: VARRAY 的使用举例 先定义一个能保存 5 个 VARCHAR2(STRUCTURE)25)数据类型的成员的 VARRAY 数据 类 型 ORG_VARRAY_TYPE , 然 后 声 明 一 个 该 数 据 类 型 的 VARRAY 变 量 V_ORG_VARRAY,最后用与 ORG_VARRAY_TYPE 数据类型同名的构造函数语 法给 V_ORG_VARRAY 变量赋予初值并显示赋值结果。 注意,在引用数组中的成员时.需要在一对括号中使用顺序下标,下标 从 1 开始而不是从 0 开始。 [sql] view plain copy print? 01.DECLARE 02. TYPE ORG_VARRAY_TYPE IS VARRAY(STRUCTURE)5) OF VARCHAR2(STRUCTURE)25); 03. V_ORG_VARRAY ORG_VARRAY_TYPE; 04.BEGIN 05. V_ORG_VARRAY := ORG_VARRAY_TYPE(STRUCTURE)'1','2','3','4','5'); 06. DBMS_OUTPUT.PUT_LINE(STRUCTURE)' 输 出 1 : ' || V_ORG_VARRAY(STRUCTURE)1) || ' 、 '|| V_ORG_VARRAY(STRUCTURE)2) || ' 、 '|| V_ORG_VARRAY(STRUCTURE)3) || ' 、 '|| V_ORG_VARRAY(STRUCTURE)4)); 07. DBMS_OUTPUT.PUT_LINE(STRUCTURE)'输出 2:' || V_ORG_VARRAY(STRUCTURE)5)); 08. V_ORG_VARRAY(STRUCTURE)5) := '5001'; 09. DBMS_OUTPUT.PUT_LINE(STRUCTURE)'输出 3:' || V_ORG_VARRAY(STRUCTURE)5)); 10.END; c 语言中 table 的用法: TABLE 使用举例 2.4.1 存储单列多行 这个和 VARRAY 类似。但是赋值方式稍微有点不同,不能使用同名的构 造函数进行赋值。具体的如下: [sql] view plain copy print? 01.DECLARE 02. TYPE ORG_TABLE_TYPE IS TABLE OF VARCHAR2(STRUCTURE)25) 03. INDEX BY BINARY_INTEGER; 04. V_ORG_TABLE ORG_TABLE_TYPE; 05.BEGIN 06. V_ORG_TABLE(STRUCTURE)1) := '1'; 07. V_ORG_TABLE(STRUCTURE)2) := '2'; 08. V_ORG_TABLE(STRUCTURE)3) := '3'; 09. V_ORG_TABLE(STRUCTURE)4) := '4'; 10. V_ORG_TABLE(STRUCTURE)5) := '5'; 11. DBMS_OUTPUT.PUT_LINE(STRUCTURE)' 输出 1:' || V_ORG_TABLE(STRUCTURE)1) || '、'|| V_ORG_TABLE(STRUCTURE)2) || '、'|| V_ORG_TABLE(STRUCTURE)3) || '、'|| V_ORG_TABLE(STRUCTURE)4)); 12. DBMS_OUTPUT.PUT_LINE(STRUCTURE)'输出 2:' || V_ORG_TABLE(STRUCTURE)5)); 13.END; 2.4.2 存储多列多行和 ROWTYPE 结合使用 采用 bulkcollect 可以将查询结果一次性地加载到 collections 中。而不 是通过 cursor 一条一条地处理。 [sql] view plain copy print? 01.DECLARE 02. TYPE T_TYPE IS TABLE OF SF_ORG%ROWTYPE; 03. V_TYPE T_TYPE; 04. BEGIN 05. SELECT ORG_ID,ORG_NAME,PARENT_ID BULK COLLECT INTO V_TYPE 06. FROM SF_ORG 07. WHERE SF_ORG.ORG_ID <= 3; 08. 09. FOR V_INDEX IN V_TYPE.FIRST .. V_TYPE.LAST LOOP 10. DBMS_OUTPUT.PUT_LINE(STRUCTURE)V_TYPE(STRUCTURE)V_INDEX).C1 || ' ' || V_TYPE(STRUCTURE)V_INDEX).C2); 11. END LOOP; 12. END; 2.4.3 存储多列多行和 RECORD 结合使用 采用 bulkcollect 可以将查询结果一次性地加载到 collections 中。而不 是通过 cursor 一条一条地处理。 [sql] view plain copy print? 01.DECLARE 02. TYPE TEST_EMP IS RECORD 03. (STRUCTURE) 04. C1 SF_ORG.ORG_NAME%TYPE, 05. C2 SF_ORG.PARENT_ID%TYPE 06. ); 07. TYPE T_TYPE IS TABLE OF TEST_EMP; 08. V_TYPE T_TYPE; 09. BEGIN 10. SELECT ORG_NAME, PARENT_ID BULK COLLECT INTO V_TYPE 11. FROM SF_ORG 12. WHERE SF_ORG.ORG_ID <= 3; 13. 14. FOR V_INDEX IN V_TYPE.FIRST .. V_TYPE.LAST LOOP 15. DBMS_OUTPUT.PUT_LINE(STRUCTURE)V_TYPE(STRUCTURE)V_INDEX).C1 || ' ' || V_TYPE(STRUCTURE)V_INDEX).C2); 16. END LOOP; 17. END; 3 问题 VARRAY 和 TABLE 集合不能直接对其进行查询。只能对其进行遍历。
温馨提示:当前文档最多只能预览 2 页,此文档共5 页,请下载原文档以浏览全部内容。如果当前文档预览出现乱码或未能正常浏览,请先下载原文档进行浏览。
发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

下载需知:

1 该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读

2 除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑修改

3 有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载

4 该文档为会员上传,版权归上传者负责解释,如若侵犯你的隐私或权利,请联系客服投诉

返回顶部