触发器、游标、存储结构
今天搞了一个上午,就写了这个东西
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Cj_Kcjd]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Cj_Kcjd]
GO
CREATE TABLE [dbo].[Cj_Kcjd] (
[Xnxqh] [varchar] (11) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[kcbm] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Xh] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[KsxzCode] [varchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Xf] [money] null,
[KcCjJD] [money] NULL ,
[Zcj] [money] NULL ,
[XfCjJD] [money] NULL,
CONSTRAINT [PK_Cj_Kcjd] PRIMARY KEY CLUSTERED
(
[Xnxqh],
[kcbm],
[Xh],
[KsxzCode]
)
) ON [PRIMARY]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[updateJD]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[updateJD]
GO
CREATE TRIGGER [updateJD] ON [dbo].[cj_kcjd]
FOR UPDATE,INSERT
as
declare @Xnxqh varchar(11)
declare @Kcbm varchar(10)
declare @Xh varchar(20)
declare @KsxzCode varchar(2)
declare @Zcj money
declare @Xf money
declare @KcCjJD money
declare @XfCjJD money
declare @Qsxs money
declare @Jsxs money
declare @Cjjd money
declare c_JD cursor for select xnxqh,kcbm,xh,ksxzcode,zcj,xf from inserted
open c_JD
fetch next from c_JD into @Xnxqh,@Kcbm,@Xh,@Ksxzcode,@Zcj,@Xf
while @@fetch_status = 0
begin
select @Zcj=isNull(@Zcj,0)
select @cjjd=(select Cjjd from cj_cjjddyb where qsxs<=@Zcj and jsxs>=@Zcj)
select @Cjjd=isNull(@Cjjd,0)
select @XfCjJD = @Cjjd / @Xf
select @KcCjJD = @Zcj * @Xf / @Xf
update [cj_kcjd] set kccjjd = @KcCjJD,xfcjjd = @XfCjJD where xnxqh = @Xnxqh and Kcbm = @Kcbm and Xh = @Xh and ksxzcode = @Ksxzcode
fetch next from c_JD into @Xnxqh,@Kcbm,@Xh,@Ksxzcode,@Zcj,@Xf
end
close c_JD
deallocate c_JD
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cj_kcjdupdateNAME]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cj_kcjdupdateNAME]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE .[dbo].[cj_kcjdupdateNAME]
as
set nocount on
declare @Xnxqh varchar(11)
declare @Kcbm varchar(10)
declare @Xh varchar(20)
declare @KsxzCode varchar(2)
declare @Zcj money
declare @Xf money
declare @KcCjJD money
declare @XfCjJD money
declare @Qsxs money
declare @Jsxs money
declare @Cjjd money
declare c_updateJD cursor for select xnxqh,kcbm,xh,ksxzcode,zcj,xf from [cj_kcjd]
open c_updateJD
fetch next from c_updateJD into @Xnxqh,@Kcbm,@Xh,@Ksxzcode,@Zcj,@Xf
while @@fetch_status = 0
begin
select @Zcj=isNull(@Zcj,0)
select @cjjd=(select Cjjd from cj_cjjddyb where qsxs<=@Zcj and jsxs>=@Zcj)
select @Cjjd=isNull(@Cjjd,0)
select @XfCjJD = @Cjjd / @Xf
select @KcCjJD = @Zcj * @Xf / @Xf
update [cj_kcjd] set kccjjd = @KcCjJD,xfcjjd = @XfCjJD where xnxqh = @Xnxqh and Kcbm = @Kcbm and Xh = @Xh and ksxzcode = @Ksxzcode
fetch next from c_updateJD into @Xnxqh,@Kcbm,@Xh,@Ksxzcode,@Zcj,@Xf
end
close c_updateJD
deallocate c_updateJD
go
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
execute cj_kcjdupdateNAME
go
相关推荐
这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...
本实验设计涉及的核心概念是数据库中的高级特性,如存储过程、触发器和游标,这些都是数据库管理系统(DBMS)中实现复杂业务逻辑和自动化操作的关键工具。 首先,我们来深入理解一下“存储过程”。存储过程是一组...
此外,文件中还提到了存储过程(Procedure),例如`pro_1`,它是PL/SQL中的一组SQL语句和控制结构,可以作为一个单元执行。在`pro_1`中,它插入了一条新的记录到`t_table`表,并且使用了`seq_table0`序列号生成器来...
MYSQL 数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程) MYSQL 数据库高级应用宝典含实例中,涵盖了索引、视图、触发器、游标和存储过程等高级应用领域。下面我们将逐一介绍这些高级应用领域的知识点...
本文将深入探讨其中的三个核心概念:存储过程、触发器和游标。 首先,存储过程是预编译的SQL语句集合,它可以视为可重复使用的数据库函数。存储过程有以下几个显著的优点: 1. **性能提升**:由于存储过程在首次...
MySQL是世界上最流行的开源关系型数据库管理系统之一,它包含多种功能,如函数、存储过程、触发器和游标,这些功能极大地增强了数据库管理的灵活性和效率。以下是对这些概念的详细解释: 1. **MySQL函数**:MySQL...
在MySQL数据库中,索引、视图、触发器、游标和存储过程是数据库管理和优化的重要组成部分,它们各自扮演着不同的角色。 1. **索引(Index)**:索引是为了加速数据检索而创建的一种特殊的数据结构。它可以极大提高...
在高级编程中,存储过程可以包含条件判断、循环、异常处理等控制流结构,甚至可以嵌套调用其他存储过程或函数。此外,存储过程还可以用于实现游标、批量处理、事务管理和并发控制,为数据库应用程序带来更大的灵活性...
总之,索引、视图、触发器、游标和存储过程是MySQL数据库中提升效率和实现复杂业务逻辑的重要工具。了解并熟练运用这些概念,能帮助开发者更好地设计和管理数据库,提高应用程序的性能和用户体验。
MySQL触发器是数据库管理系统提供的一种机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行预定义的SQL语句或存储过程。这种机制在数据库设计中非常有用,因为它可以帮助确保数据的一致性和...
本资源“SQL语句大全”涵盖了多个关键概念,包括程序设计、视图、索引、游标、事务、触发器、锁、存储过程、XML以及权限管理。以下是对这些主题的详细阐述: 1. **程序设计**:T-SQL(Transact-SQL)是SQL Server中...
2. **游标( Cursors)**:在存储过程中,游标用于遍历查询结果集,进行逐行处理,是处理复杂数据操作的重要工具。 3. **异常处理(Exception Handling)**:在PL/SQL中,通过BEGIN...EXCEPTION...END结构处理运行...
在Oracle中,触发器和存储过程是两个关键的数据库编程组件,它们允许开发者实现更复杂的数据管理和业务逻辑。 **触发器(Triggers)** 触发器是一种数据库对象,它在特定的数据库事件发生时自动执行。这些事件可能...
本文将详细介绍如何在Navicat中创建存储过程、触发器以及使用游标进行数据操作。 1. **存储过程**: 存储过程是一组为了完成特定功能的SQL语句集合,可以在数据库中预先编译并存储,后续需要时只需调用即可。在...
综上所述,MySQL中的索引、视图、触发器、游标、事务和存储过程都是高级特性,这些工具可以帮助开发人员更好地管理和操作数据库。通过对这些概念的理解和实践,可以大幅提升数据库应用的性能和可靠性。
SQL中的触发器是一种特殊...总的来说,这个PPT学习教案涵盖了SQL中的关键概念,包括触发器、存储过程、临时表和游标,这些都是数据库管理和开发的重要组成部分,对于理解SQL的高级功能和实现复杂的业务逻辑至关重要。
接下来我们将深入探讨这些概念以及与之相关的游标、包、过程和触发器。 1. **增删改查 (CRUD)** - **创建 (Create)**:在Oracle中,创建数据表通常通过`CREATE TABLE`语句实现,定义表结构,包括字段名、数据类型...