1.sqlserver 编写脚本示例代码
--部分脚本规范 --一、创建存储过程 --1、判断数据库中是否存在要创建的存储过程,如果存在先drop掉 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[部门计划实际对比]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[部门计划实际对比] GO --2、创建存储过程 SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE [dbo].[部门计划实际对比] ( @年 INT, @月 INT, @部门编码 VARCHAR(50) ) AS select getdate() GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------------------------------- --二、创建表 --判断数据库中是否存在要创建的表,如果不存在创建 IF NOT EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[DBO].[AQ证件]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) BEGIN CREATE TABLE [DBO].[AQ证件] ( [证件编号] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NOT NULL , [工种] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NOT NULL , [职工编码] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NOT NULL , [血型] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NULL , [文化程度] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NULL , [发证时间] [SMALLDATETIME] NULL , [有效期至] [SMALLDATETIME] NULL , [最近培训时间] [SMALLDATETIME] NULL , [失效] [BIT] NULL CONSTRAINT [DF_AQ持证管理_失效] DEFAULT (0), [建档人] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NULL , [建档日期] [DATETIME] NULL , [建档机器] [VARCHAR] (50) COLLATE CHINESE_PRC_CI_AS NULL , [变更人] [VARCHAR] (20) COLLATE CHINESE_PRC_CI_AS NULL , [变更日期] [DATETIME] NULL , [变更机器] [VARCHAR] (50) COLLATE CHINESE_PRC_CI_AS NULL , CONSTRAINT [PK_AQ持证管理] PRIMARY KEY CLUSTERED ( [证件编号] ) ) END GO ------------------------------------------------------------------------------------------------------------------- --三、创建视图 --1、判断数据库中是否存在要创建的视图,如果存在先drop掉 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AQ工种]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[AQ工种] GO --2、创建视图 SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE VIEW dbo.AQ工种 AS SELECT 序号, 口径类别, 口径编码, 口径名称, 拼音 FROM dbo.系统口径 WHERE (口径类别 = 'AQ工种') GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------------------------------- --四、创建用户自定义函数 --1、判断是否存在要创建的函数,如果存在先drop掉 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_转换大写金额]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[fn_转换大写金额] GO --2、创建函数 SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE function dbo.fn_转换大写金额 ( @n_lowermoney numeric(15,2) ) returns varchar(200) as begin return '' end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------------------------------- --五、表添加列 --1、判断表格中是否存在要添加的列,不存在时添加 IF (dbo.ColumnExist('物料库存初始','实际价格') = 0) BEGIN ALTER TABLE dbo.物料库存初始 ADD 实际价格 SMALLMONEY END GO ------------------------------------------------------------------------------------------------------------------- --六、修改表中列 --1、如果存在指定的列,修改列格式 IF (dbo.ColumnExist('物料库存初始','实际价格') = 1) BEGIN ALTER TABLE dbo.物料库存初始 ALTER COLUMN 实际价格 MONEY END GO ------------------------------------------------------------------------------------------------------------------- --七、删除表中列 IF (dbo.ColumnExist('物料库存初始','实际价格') = 1) BEGIN ALTER TABLE dbo.物料库存初始 DROP COLUMN 实际价格 END GO ------------------------------------------------------------------------------------------------------------------- --八、添加触发器 --1、如果已存在要添加的触发器,先drop掉 IF OBJECT_ID('TR_跟踪材料单据_添加') IS NOT NULL DROP TRIGGER Tr_跟踪材料单据_添加 GO --2、创建触发器 CREATE TRIGGER Tr_跟踪材料单据_添加 ON [dbo].[材料单据] FOR INSERT AS IF EXISTS(SELECT * FROM Config WHERE 参数='启用材料单据自动跟踪' AND 参数值 = '1') BEGIN INSERT INTO [dbo].[材料单据变动历史]([变动时间], [变动机器], [变动说明], [变动人])--, [ID], [单据ID], [申请日期], [单据编号], [部门编码], [工程编码], [仓库编码], [对方部门], [对方仓库], [费用编码], [费用名称], [规格], [厂家], [单位], [计划数量], [审批数量], [实际数量], [计划单价], [实际单价], [计划金额], [实际金额], [级别], [录入人], [录入时间], [申请人], [申请时间], [审核人], [审核时间], [打印], [确认人], [确认时间], [取消人], [取消时间], [料单状态], [发放日期], [来源], [仓库], [备注], [记帐数量], [记帐单价], [记帐金额], [记帐模式], [记帐时间], [记帐标志], [冲记帐], [费用来源], [配送地点], [原始单据], [是否以旧换新], [换新率], [应回收数量], [实回收数量], [已回收], [回收人], [回收时间], [记帐年], [记帐期], [主管审批角色], [主管审批操作员], [主管已审批], [主管审批时间], [安全投入分类], [退回人], [退回时间], [原材料编码]) SELECT GETDATE() , HOST_NAME() , '添加' , SUSER_SNAME() FROM INSERTED END GO ------------------------------------------------------------------------------------------------------------------- --九、添加约束 --1、判断数据库中是否存在要添加的约束,不存在时添加 IF NOT EXISTS (SELECT * FROM information_schema.CONSTRAINT_COLUMN_USAGE WHERE Table_name='物料' and constraint_name = 'FK_物料_费用类别') BEGIN ALTER TABLE dbo.物料 ADD CONSTRAINT FK_物料_费用类别 FOREIGN KEY ( 材料类别 ) REFERENCES dbo.费用类别 ( 编码 ) END GO --十、添加数据 if not exists (select * from Config where 参数='柱状图图表颜色序列') BEGIN INSERT [Config] ( [序号] , [参数] , [参数值] , [备注] ) VALUES ( 21000 , '柱状图图表颜色序列' , 'AFD8F8,F6BD0F,8BBA00,FF8E46,008E8E,D64646,8E468E,588526,B3AA00,008ED6,9D080D,A186BE,993300,003300,333399,333333,FF6600,00CCFF,FF99CC,FF0097,758A99,815476,41555D,827100,7C4b00,C93756,003472,845A33,44CEF6,6E511E', '以逗号分隔的Web16进制颜色值,最后不能有逗号,不能是中文逗号' ) END go