找到 6705 篇文章 关于数据库

如何在 ORDERS DB2 表上创建一个新的触发器?给出触发器的语法

Mandalika
更新于 2020-12-01 04:44:50

401 次浏览

触发器是数据库程序,由数据库自动触发。触发器是使用 CREATE TRIGGER 语句创建的。例如,我们想创建一个触发器,在 ORDERS 表中每次插入新记录后,将 ORDERS 表的 ORDER_COMMISION 列更新为 ORDER_TOTAL 值的 5%。示例CREATE TRIGGER ORDERCOMMUPD AFTER INSERT ON ORDERS FOR EACH ROW MODE DB2SQL BEGIN ATOMIC UPDATE ORDERS SET ORDER_COMMISION=(5*ORDER_TOTAL)/100;使用上述语句,我们创建了一个 AFTER 触发器,该触发器将在 ORDERS 表中插入任何新行后自动触发。类似地,我们可以有 BEFORE ... 阅读更多

DB2 中的触发器是什么?触发器和存储过程有什么区别?

Mandalika
更新于 2020-12-01 04:43:41

1K+ 次浏览

触发器是数据库程序,由 DBMS 自动触发,以响应对指定表进行的任何修改。触发器只能与单个表关联,并且如果发生所需事件,则不能跳过。触发器类似于存储过程,因为两者都是由 DB2 直接管理的代码段。但是,触发器是事件驱动的,并且在指定表上发生所需事件(INSERT/UPDATE/DELETE)时自动执行。另一方面,存储过程需要在应用程序程序中显式调用。它们之间的另一个区别是,触发器是 ... 阅读更多

COBOL-DB2 程序如何调用存储过程?举个例子。

Mandalika
更新于 2020-12-01 04:41:51

4K+ 次浏览

存储过程通常包含一个或多个程序中经常使用的 SQL。存储过程的主要优点是它减少了 COBOL 和 DB2 之间的数据流量,因为存储过程驻留在 DB2 中。COBOL-DB2 程序可以使用 CALL 语句调用存储过程,并且我们可以嵌套存储过程最多 16 层。例如,如果我们有一个名为 ORDERSTAT 的存储过程,那么我们可以使用以下命令在我们的 COBOL-DB2 程序中调用它:示例EXEC SQL    CALL ORDERSTAT (:WS-ORDER-ID, :WS-ORDER-STATUS) END-EXEC为了创建 DB2 过程,我们 ... 阅读更多

数据库停机对 COBOL-DB2 程序的影响

Mandalika
更新于 2020-12-01 04:40:37

896 次浏览

问题:如果 COBOL-DB2 程序尝试查询 DB2 表,但该表所在的数据库已关闭,结果会怎样?解决方案当我们尝试使用 COBOL-DB2 程序访问任何表并且该表所在的 DB2 数据库已关闭时,COBOL-DB2 程序将异常终止。在这种情况下,SQLCA 字段的 SQLCODE 将具有值 -904。根据 IBM 文档,SQLCODE -904 指示。“资源不可用。数据库或表空间不可用”有几种方法可以用来查找 ... 阅读更多

编写 SQL 查询以计算 ORDERS DB2 表中 TRANSACTION_ID 的重复次数

Mandalika
更新于 2020-12-01 04:39:32

2K+ 次浏览

我们可以使用以下查询在 ORDERS DB2 表中找到重复的 TRANSACTION_ID:示例SELECT TRANSACTION_ID, COUNT(*) AS TRANSACTION_COUNT FROM ORDER GROUP BY TRANSACTION_ID HAVING COUNT(*) > 1COUNT(*) 的目的是计算行数。我们将使用 GROUP BY 函数根据 TRANSACTION_ID 对结果进行分组,并为了显示重复的事务 ID,我们将使用 HAVING 语句对 COUNT(*) 大于 1 的谓词。例如,考虑以下 TRANSACTIONS DB2 表:TRANSACTION_IDTRANSACTION_STATUSIRN22345PAIDIRN22345PAIDIRN22345PAIDIRN56902PAIDIRN99781UNPAIDIRN56902PAID该查询将给出以下结果:TRANSACTION_IDTRANSACTION_COUNTIRN223453IRN569022IRN997811阅读更多

解释 SQL 中的 COUNT 聚合函数和 CURRENT DATE 函数

Mandalika
更新于 2020-12-01 04:38:41

346 次浏览

问题:编写一个 SQL 查询,以计算 ORDERS DB2 表中今天下达的订单数量。(日期不应硬编码)解决方案我们可以使用以下 DB2 查询找到今天下达的订单数量:示例SELECT COUNT(ORDER_ID) AS ORDER_COUNT FROM ORDERS WHERE ORDER_DATE = CURRENT DATE在此查询中,我们使用了 COUNT COLUMN 函数,它将计算 ORDER_ID(主键)的总数。在 WHERE 子句中,我们将使用 ORDER_DATE 列的谓词。CURRENT DATE 是一个 DB2 内置函数,它将返回当前系统日期。例如,如果 ... 阅读更多

描述条件处理的 SQL 查询示例

Mandalika
更新于 2020-11-30 09:42:48

202 次浏览

问题:编写一个 SQL 查询以显示 2 列。第一列应包含 ORDER_ID,第二列应根据 ORDER_TOTAL > 500 给出 YES/NO 的值,表示是否免运费。解决方案显示 ORDER_ID 和基于 ORDER_TOTAL 标准的免运费结果的查询可以写成如下。示例SELECT ORDER_ID,    CASE WHEN ORDER_TOTAL > 500 THEN ‘YES’       ELSE ‘NO’ AS FREE_SHIPPING    END FROM ORDERS我们将使用 CASE 表达式,通过它我们可以实现一个逻辑来检查 ORDER_TOTAL。如果 ORDER_TOTAL 大于 500,那么我们将获得“YES”表示免运费 ... 阅读更多

调查 DB2 死锁的根本原因和负责的资源

Mandalika
更新于 2020-11-30 09:41:18

1K+ 次浏览

问题:COBOL-DB2 程序因死锁而失败。您将如何找到导致程序失败的资源?解决方案当两个或多个应用程序因等待彼此释放其所需的资源上的锁而卡住时,就会发生死锁情况。有关详细信息和日志,可以在 DB2 系统作业 DSNZMSTR 作业中找到。DSNZ 是已安装的 DB2 子系统的名称,它因安装而异。此作业的 SYSOUT 继续显示 DB2 级别系统日志。与死锁相关的日志也存在于 ... 阅读更多

以示例说明锁升级的概念

Mandalika
更新于 2020-11-30 09:40:03

529 次浏览

DB2 锁升级定义为获取特定资源上更严格锁的过程。DB2 将锁升级用于尝试访问相同 DB2 资源的并发进程。基本上,有三种类型的锁。共享锁 (S)并发进程可以在资源(DB2 表、行、页等)上放置共享锁,但不能更新数据。为了更新数据,并发进程必须将其锁提升到更新。更新锁 (U)并发进程可以读取数据,但不能更新它。更新锁表示该进程已准备好更新 ... 阅读更多

直接索引查找的实现和目的

Mandalika
更新于 2020-11-30 09:38:27

134 次浏览

当 WHERE 子句谓词中使用的所有列都是索引的一部分时,DB2 优化器会选择直接索引查找。例如,如果我们有如下所示的 ORDERS DB2 表。ORDER_IDORDER_DATEORDER_TOTALZ2234530-10-2020342Z3341214-08-2020543Z5699019-10-2020431Z5690221-09-20206743Z9978104-11-2020443Z5611229-08-2020889在此表中,有一个索引,其中包含名为 ORDER_ID 和 ORDER_DATE 的列。对于以下查询,DB2 优化器将选择直接索引查找,因为 SELECT 语句中使用的列也是索引的一部分。示例SELECT ORDER_ID, ORDER_DATE, INVOICE_ID FROM ORDERS    WHERE ORDER_ID = ‘Z33412’ AND ORDER_DATE = ‘14-08-2020’上述查询的结果如下所示。ORDER_IDORDER_DATEZ3341214-08-2020在 ... 阅读更多

广告