123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
-
- -- =============================================
- -- SQL 脚本规范示例
- -- 建立日期:2008-01-14
- -- 编 写 者:唐根平
- -- 版 本: V1.0
- -- =============================================
-
- /* 在每个存储过程、函数、触发器、视图前均需以下这段注释,每个完整的脚本文件头也需要如上所示的注释 */
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- 调用示例: <如果是存储过程、函数则需要此行>
- -- 程序修改: <可选>
- -- 修改日期: <可选>
- -- 修改说明: <可选,每修改一次,请重复本行及上述二行一次>
- -- 程序修改: <可选>
- -- 修改日期: <可选>
- -- 修改说明: <可选,每修改一次,请重复本行及上述二行一次>
- -- =============================================
- --**********************************************--
- PRINT '描述接下来的若干段语句的功用,例:开始…………'
- --**********************************************--
- IF EXISTS(某判断) BEGIN
- --执行操作1
- --执行操作2
- END
- IF NOT EXISTS(某判断) BEGIN
- --执行操作3
- --执行操作4
- END
- --执行操作5
- GO
- --**********************************************--
- PRINT '结束…………'
- --**********************************************--
- --**********************************************--
- PRINT '描述本段语句的功能,例:建立表[……]'
- --**********************************************--
- IF NOT EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME=N'表名')
- CREATE TABLE 表名(
- [字段名1] [varchar](10) NOT NULL,
- [字段名2] [numeric](5, 0) NOT NULL,
- …………,
- [字段名N] [varchar](10)
- ) GO
-
- --**********************************************--
- PRINT '新增字段[……],默认值为……,字段含义为……'
- --**********************************************--
- IF NOT EXISTS(SELECT * FROM syscolumns WHERE id=object_id('表名') and NAME='字段名')
- ALTER TABLE [表名] ADD [字段名] [字段类型] CONSTRAINT 默认值约束名 DEFAULT 默认值
- ELSE
- ALTER TABLE [表名] ALTER COLUMN [字段名] [字段类型] CONSTRAINT 默认值约束名
- DEFAULT 默认值
- GO
-
- --**********************************************--
- PRINT '建立索引[……]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysindexes WHERE name = N'索引名' AND id = object_id(N'表名'))
- DROP INDEX [表名].[索引名]
- GO
-
- CREATE INDEX [索引名] ON [表名] ([字段名])
- GO
-
- --**********************************************--
- PRINT '建立视图[……]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'视图名') and OBJECTPROPERTY(id, N'IsView') = 1)
- DROP VIEW [视图名]
- GO
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- =============================================
- CREATE VIEW [视图名] AS
- --你的SELECT语句
- SELECT …… FROM ……
- GO
-
- --**********************************************--
- PRINT '建立存储过程[…………]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'存储过程名') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
- DROP PROCEDURE [存储过程名]
- GO
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- 调用示例: <如果是存储过程、函数则需要此行>
- -- =============================================
- CREATE PROCEDURE [存储过程名]
- @参数1 参数1类型, --参数1含义说明
- @参数2 参数2类型, --参数2含义说明
- …………
- @参数N 参数N类型 --参数N含义说明
- AS
- BEGIN
- --关闭中间过程的统计信息
- SET NOCOUNT ON
- --定义变量
- DECLARE @sql NVarchar(4000)
-
- --进行你自己的操作
- --处理结束,如要在中途退出存储过程,则可直接调用RETURN
- --RETURN
- END
- GO
- --**********************************************--
- PRINT '建立函数[…………]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'标量值函数名') AND xtype in (N'FN', N'IF', N'TF'))
- DROP FUNCTION [标量值函数名]
- GO
-
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- 调用示例: SELECT dbo.[标量值函数名](参数1)
- -- =============================================
- CREATE FUNCTION [标量值函数名]
- (
- @参数1 参数1类型 --参数1含义说明
- )
- RETURNS 返回值类型
- AS
- BEGIN
- --定义返回变量
- DECLARE @ResultVar 返回值类型
- --给返回变量赋值
- SET @ResultVar = ……
- --返回函数计算结果
- RETURN @ResultVar
- END
- GO
-
- --**********************************************--
- PRINT '建立函数[…………]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'内联表值函数名') AND xtype in (N'FN', N'IF', N'TF'))
- DROP FUNCTION [内联表值函数名]
- GO
-
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- 调用示例: SELECT * FROM dbo.[内联表值函数名](参数1)
- -- =============================================
- CREATE FUNCTION [内联表值函数名]
- (
- @参数1 参数1类型 --参数1含义说明
- )
- RETURNS TABLE
- AS
- RETURN
- (
- --用一条SELECT语句返回结果,此种函数可相当于带参数的视图使用
- SELECT * FROM [某表] WHERE 某字段 = @参数1
- )
- GO
-
- --**********************************************--
- PRINT '建立函数[…………]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'多语句表值函数函数名') AND xtype in (N'FN', N'IF', N'TF'))
- DROP FUNCTION [多语句表值函数函数名]
- GO
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- 调用示例: SELECT * FROM dbo.[多语句表值函数函数名](参数1)
- -- =============================================
- CREATE FUNCTION [多语句表值函数函数名]
- (
- @参数1 参数1类型 --参数1含义说明
- )
- RETURNS
- @多语句表值函数的虚拟表名 TABLE
- (
- [字段名1] 字段类型1, --含义说明
- [字段名1] 字段类型2 --含义说明
- )
- AS
- BEGIN
- --往虚拟表中插入记录
- INSERT INTO @多语句表值函数的虚拟表名 VALUES (值1,值2)
- --返回最后的结果
- RETURN
- END
- GO
- --**********************************************--
- PRINT '建立触发器[…………]'
- --**********************************************--
- IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'触发器名') AND xtype in (N'TR'))
- DROP TRIGGER [触发器名]
- GO
- -- =============================================
- -- 程序编写: <你的中文姓名>
- -- 建立日期: <yyyy-mm-dd>
- -- 功能说明: <说明本模块或本脚本的功能>
- -- 备 注: <可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
- -- =============================================
- CREATE TRIGGER [触发器名]
- ON 表名
- <AFTER 或 FOR> <INSERT 或 DELETE 或 UPDATE>
- AS
- BEGIN
- SET NOCOUNT ON;
-
- --插入触发器内部执行语句
-
- END
- GO
- --**********************************************--
- PRINT '描述接下来的若干段语句的功用,例:开始处理……数据'
- --**********************************************--
- PRINT '往表[表名]中插入或修改记录'
- IF NOT EXISTS (SELECT * FROM 表名 WHERE 主键字段 = '某值')
- INSERT INTO 表名 (字段列表)
- VALUES (值列表)
- ELSE
- UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,……
- WHERE 主键字段 = '某值'
- GO
- --**********************************************--
- PRINT '结束…………'
- --**********************************************--
- --**********************************************--
- PRINT '--所有操作结束--'
- --**********************************************--
|