管理信息化如何读取并处理数据库表.

上传人:精****库 文档编号:137822042 上传时间:2020-07-12 格式:DOC 页数:31 大小:74.84KB
返回 下载 相关 举报
管理信息化如何读取并处理数据库表._第1页
第1页 / 共31页
管理信息化如何读取并处理数据库表._第2页
第2页 / 共31页
管理信息化如何读取并处理数据库表._第3页
第3页 / 共31页
管理信息化如何读取并处理数据库表._第4页
第4页 / 共31页
管理信息化如何读取并处理数据库表._第5页
第5页 / 共31页
点击查看更多>>
资源描述

《管理信息化如何读取并处理数据库表.》由会员分享,可在线阅读,更多相关《管理信息化如何读取并处理数据库表.(31页珍藏版)》请在金锄头文库上搜索。

1、 1读取并处理 数据库表概览内容数据库表和 SQL 概念从数据库表 读取数据定义选择的 结果指 定将读取的 数据库表为选定数据 指定目标区选择即将读 取的行给行分组指定行的顺 序更改数据库 表的内容向数据库表 添加行在数据库表 中更改行添加或更改 行从数据库表 中删除行使用光标从 数据库表中 读取行打开光标用光标读取 数据如果 FETCH 语句没有读 取任何行, SY-SUBRC 就设置为 4,否则设 置为 0。关闭光标使用光标读 取数据的示 例确认或取消 对数据库表 的更改为数据库表 处理指定集 团在 ABAP/4 程序中使用 本地的SQL 语句在 ABAP/4 程序的执行 过程中锁定 数据

2、库对象检查 ABAP/4 程序用户的 权限本节讲述下 列主题:ABAP/4 中的 SQL 概念ABAP/4 的开放式 SQLABAP/4 自身的 SQL锁定和授权在处理来自 数据库表的 大量数据时 ,程序的运 行时间就成 了影响性能 的重要因素 。有关如何 达到最优性 能的示例, 请选择 ABAP/4 开发工作台 中的“测试 实时分析” (或使用事 务 SE30) ,并选定“ 提示和策略 ”。在“SQL 界面”下, 将可找到关 于本节的适 当示例。2数据库表和 SQL 概念在 R/3 系统中,需 长期保存的 数据都存储 在关系数据 库表中。关 于各种类型 的数据库表 以及如何创 建和维护它 们

3、的信息, 参见文档 ABAP/4 词典 (页 Error! Not a valid link.) 。结构化查询 语言 (SQL) 是为访问关 系数据库创 建的。SQL 有两个语句 类型:数据 定义语言 (DDL) 语句和数据 操作语言 (DML) 语句。现在,SQL 还没有完全 标准化。要 访问指定的 数据库系统 ,必须查阅 该系统的文 档,以获取 可用的 SQL 语句及其正 确的语法的 列表。要在 ABAP/4 程序中包含 这些 SQL 语句,请使 用自身的 SQL(参 见 在 ABAP/4 程序中使用 本地的SQL 语句 (页 ) )。为了避免不 同的数据库 表之间的不 兼容性,并 使 A

4、BAP/4 程序能在应 用中独立于 数据库系统 ,SAP 创建了一套 叫作开放式 SQL 的独立 SQL 语句。开放 式 SQL 包含了一套 标准的 SQL 语句以及一 些专用于 SAP 的增强语句 。使用开放 式 SQL,可 以访问对 SAP 系统有效的 任何数据库 表,而不用 考虑它的创 建者。下图显示了 开放式 SQL 与自身的 SQL 之间的区别 :数据库界面 可将 SAP 的开放式 SQL 语句翻译成 专用于现正 使用的数据 库的 SQL 命令。自身 的 SQL 直接访问数 据库。开放式 SQL 关键字关键字用途SELECT从数据库表 读取数据 (页 ) INSERT向数据库表 添加

5、行 (页 ) UPDATE在数据库表 中更改行 (页 ) MODIFY添加或更改 行 (页 ) DELETE从数据库表 中删除行 (页 ) OPEN CURSOR,FETCH, CLOSE CURSOR使用光标从 数据库表中 读取行 (页 ) COMMIT WORK, ROLLBACK WORK确认或取消 对数据库表 的更改 (页 ) 在 ABAP/4 程序中使用 开放式 SQL 语句时,必 须保证:1) 被定址的数 据库系统必 须是 SAP 支持的。2) 必须已经在 ABAP/4 词典中定义 了被定址的 数据库表。下列系统字 段在开放式 SQL 操作中起着 重要的作用 :_ SY-SUBRC

6、和使用其它 ABAP/4 语句一样, 系统字段 SY-SUBRC 中的返回代 码值表示在 每个开放式 SQL 操作之后该 操作是否成 功。如果操 作是成功的 ,SY-SUBRC 的值就等于 0;如果操 作是失败的 ,SY-SUBRC 的值就不等 于 0。_ SY-DBCNTSY-DBCNT 字段中的值 表明受该操 作影响的行 数,或已被 处理的行数 。可以使用 SQL 跟踪实用 程序监视 SQL 或 ABAP/4 功能的性能 。为此,请 选择“系统 实用程序SQL跟 踪”。详细 信息,参见 文档 ABAP/4 工作台工具 (页 Error! Not a valid link.) 。3从数据库表

7、 读取数据要从数据库 表读取数据 ,请使用 SELECT 语句。语法SELECT FROM INTO WHERE GROUP BY ORDER BY .该语句有几 个基本子句 。下表中列 出了每一个 子句。子句说明SELECT SELECT 子句定义选 择的结果是 单行还是一 个表、选择 的是哪些列 、以及是否 将排除相同 的行。定义选择的 结果 (页 ) FROM FROM 子句指定即 将从中选取 数据的数据 库表或视图 。指 定将读取的 数据库表 (页 ) INTO INTO 子句确定即 将读入选定 数据的目标 区 。 该子句也可 以放在FROM 子句之前。 如果没有指 定 INTO 子句

8、,系统 将使用表工 作区。表工 作区是由 TANLES 语句自动创 建的表头行 。为选定数据 指定目标区 (页 ) WHERE WHERE 子句指定将 按照指定的 条件读取哪 些行来作为 选择。选择即将读 取的行 (页 ) GROUP BY GROUP-BY 子句从几行 组成的组中 产生了作为 结果的单行 。一个组是 在 中列出的列 中有相同值 的行的集合 。给行分组 (页 ) ORDER BY ORDER-BY 子句为选定 的行定义顺 序 。指定行的顺 序 (页 ) 关于 SELECT 语句及其子 句性能的重 要信息,参 见关键字文 档。3定义选择的 结果SELECT 子句定义是 选择单行还

9、 是选择多行 、是否去掉 重复行以及 将选择哪些 列。图中显示了 可能的选择 :有关叙述 SELECT 子句的三个 变式的主题 ,参见4选择多行中 的所有数据要从数据库 表中读取所 有列和多行 ,请按如下 方式在循环 中使用 SELECT 语句。语法SELECT DISTINCT * . .ENDSELECT.必须用 ENDSELECT 语句结束该 循环。该循环依次 读取所选行 ,并为每个 读取的行执 行循环中的 ABAP/4 语句。SELECT 循环的结果 是与被读取 的数据库表 的格式完全 相同的表。DISTINCT 选项将自动 的去掉重复 的行。如果至少读 取了一行, 系统字段 SY-S

10、UBRC 就返回 0。如果没 有读取,系 统字段 SY-SUBRC 就返回 4。系统字 段 SY-DBCNT 给读取的行 计数。每执 行一次 SELECT 语句,SY-DBCNT 都加 1。TABLES SPFLI.SELECT * FROM SPFLI WHERE CITYFROM EQ FRANKFURT. . WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO. .ENDSELECT.该 SELECT 循环从 SPFLI-CITYFROM 字段中包含 “FRANKFURT” 的 SPFLI 表中读取所 有的行

11、(由 WHERE 子句指定) 。读取的每 一行的数据 都由循环中 的 WRITE 语句写入输 出列表中。输出列表如 下所示:4选择单行中 的所有数据要从数据库 表中读取单 个行的所有 列,请按如 下方式使用 SELECT 语句:语法SELECT SINGLE FOR UPDATE * . WHERE .该语句的结 果是一个单 行。为了保 证清楚地指 定了一行, 就必须在 WHERE 子句的条件 中用 AND 链接形成数 据库表主码 主码的所有 字段。(关 于 WHERE 子句的信息 ,参见 选择即将读 取的行 (页 ) )。如果系统没 有找到具有 指定关键字 的行,系统 字段 SY-SUBRC

12、 将设置为 4。如果系 统找到了一 个完全符合 指定条件的 行,SY-SUBRC 就返回 0。可以使用 FOR UPDATE 选项锁定在 数据库表中 选定的行。 程序将一直 等到接收到 该锁定。如 果数据库检 测到或怀疑 有一个死锁 定,将产生 运行时间错 误。FOR UPDATE 选项不是将 SAP 锁定机制与 ENQUEUE/DEQUEUE 功能模块一 起使用的替 代品。例如 ,显示一个 新的屏幕时 ,所有用 FOR UPDATE 锁定的行都 将自动解锁 。要保证在 显示新屏幕 时锁定的行 保留锁定状 态,就必须 使用 SAP 锁定机制。 这是使锁定 的行一直到 事务的结束 都保留其锁 定

13、状态的唯 一方法。详 细信息,参 见 在 ABAP/4 程序的执行 过程中锁定 数据库对象 (页 ) TABLES SPFLI.SELECT SINGLE * FROM SPFLI WHERE CARRID EQ LH AND CONNID EQ 2407.WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.该 SELECT 语句只从 SPFLI 中读取 CARRID 字段中包含 “LH”并 且 CONNID 字段中包含 “2407” 的行。输出屏幕如 下所示5选择并处理 指定列中数 据要读取显式 地包含规定 的列

14、的行, 或要得到关 于数据库表 特定列的摘 要信息,请 按如下方法 一起使用 SELECT 语句与列表 :语法SELECT SINGLE FOR UPDATE DISTINCT .其中每个 都具有下列 形式之一_ 是数据库表 的字段或表 单的总计表 达式:( DISTINCT )关于总计表 达式的说明 ,参见下列 内容。_ AS 是结构化目 标区的第 i 个组件的可 选名称。可 使用该可选 名称将读取 或处理指定 行的结果写 到目标区的 组件 中。为此, 还必须使用 INTO 子句的 CORRESPONDING FIELDS 选项(关于 该选项的详 细信息及示 例,参见 逐个组件地 读取数据 (页 ) )。DISTINCT 选项将自动

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号