【SqlServer】------- SqlServer 编写sql脚本执行示例代码

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




 

你可能感兴趣的:(数据库)