SQL脚本编程范本2.sql 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. --=============================================
  2. --SQL脚本规范示例
  3. --建立日期:2008-01-14
  4. --编 写 者:唐根平
  5. --版 本: V1.0
  6. --=============================================
  7. /*在每个存储过程、函数、触发器、视图前均需以下这段注释,每个完整的脚本文件头也需要如上所示的注释*/
  8. --=============================================
  9. --程序编写:<你的中文姓名>
  10. --建立日期:<yyyy-mm-dd>
  11. --功能说明:<说明本模块或本脚本的功能>
  12. --备 注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  13. --调用示例:<如果是存储过程、函数则需要此行>
  14. --程序修改:<可选>
  15. --修改日期:<可选>
  16. --修改说明:<可选,每修改一次,请重复本行及上述二行一次>
  17. --程序修改:<可选>
  18. --修改日期:<可选>
  19. --修改说明:<可选,每修改一次,请重复本行及上述二行一次>
  20. --=============================================
  21. --**********************************************--
  22. PRINT'描述接下来的若干段语句的功用,例:开始…………'
  23. --**********************************************--
  24. IF EXISTS(某判断)BEGIN
  25. --执行操作1
  26. --执行操作2
  27. END
  28. IF NOT EXISTS(某判断)BEGIN
  29. --执行操作3
  30. --执行操作4
  31. END
  32. --执行操作5
  33. GO
  34. --**********************************************--
  35. PRINT'结束…………'
  36. --**********************************************--
  37. --**********************************************--
  38. PRINT'描述本段语句的功能,例:建立表[……]'
  39. --**********************************************--
  40. IF NOT EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME=N'表名')
  41. CREATE TABLE表名
  42. (
  43. [字段名1][varchar](10)NOT NULL,
  44. [字段名2][numeric](5,0)NOT NULL,
  45. …………,
  46. [字段名N][varchar](10)
  47. )GO
  48. --**********************************************--
  49. PRINT'新增字段[……],默认值为……,字段含义为……'
  50. --**********************************************--
  51. IF NOT EXISTS(SELECT*FROM syscolumns WHERE id=object_id('表名') and NAME='字段名')
  52. ALTER TABLE[表名] ADD [字段名][字段类型] CONSTRAINT 默认值约束名
  53. DEFAULT 默认值
  54. ELSE
  55. ALTER TABLE[表名]ALTER COLUMN[字段名][字段类型] CONSTRAINT 默认值约束名
  56. DEFAULT 默认值
  57. GO
  58. --**********************************************--
  59. PRINT'建立索引[……]'
  60. --**********************************************--
  61. IF EXISTS(SELECT*FROM sysindexes WHERE name=N'索引名' AND id=object_id(N'表名'))
  62. DROP INDEX[表名].[索引名]
  63. GO
  64. CREATE INDEX[索引名]ON[表名]([字段名])
  65. GO
  66. --**********************************************--
  67. PRINT'建立视图[……]'
  68. --**********************************************--
  69. IF EXISTS(SELECT*FROM sysobjects WHERE id=object_id(N'视图名')and OBJECTPROPERTY(id,N'IsView')=1)
  70. DROP VIEW[视图名]
  71. GO
  72. --=============================================
  73. --程序编写:<你的中文姓名>
  74. --建立日期:<yyyy-mm-dd>
  75. --功能说明:<说明本模块或本脚本的功能>
  76. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  77. --=============================================
  78. CREATE VIEW[视图名] AS
  79. --你的SELECT语句
  80. SELECT……FROM……
  81. GO
  82. --**********************************************--
  83. PRINT'建立存储过程[…………]'
  84. --**********************************************--
  85. IF EXISTS(SELECT*FROM sysobjects WHERE id=object_id(N'存储过程名') AND OBJECTPROPERTY(id,N'IsProcedure')=1)
  86. DROP PROCEDURE[存储过程名]
  87. GO
  88. --=============================================
  89. --程序编写:<你的中文姓名>
  90. --建立日期:<yyyy-mm-dd>
  91. --功能说明:<说明本模块或本脚本的功能>
  92. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  93. --调用示例:<如果是存储过程、函数则需要此行>
  94. --=============================================
  95. CREATE PROCEDURE[存储过程名]
  96. @参数1参数1类型,--参数1含义说明
  97. @参数2参数2类型,--参数2含义说明
  98. …………
  99. @参数N参数N类型--参数N含义说明
  100. AS
  101. BEGIN
  102. --关闭中间过程的统计信息
  103. SET NOCOUNT ON
  104. --定义变量
  105. DECLARE @sql NVarchar(4000)
  106. --进行你自己的操作
  107. --处理结束,如要在中途退出存储过程,则可直接调用RETURN
  108. --RETURN
  109. END
  110. GO
  111. --**********************************************--
  112. PRINT'建立函数[…………]'
  113. --**********************************************--
  114. IF EXISTS(SELECT*FROM sysobjects WHEREid=object_id(N'标量值函数名')AND xtype in(N'FN',N'IF',N'TF'))
  115. DROP FUNCTION[标量值函数名]
  116. GO
  117. --=============================================
  118. --程序编写:<你的中文姓名>
  119. --建立日期:<yyyy-mm-dd>
  120. --功能说明:<说明本模块或本脚本的功能>
  121. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  122. --调用示例:SELECTdbo.[标量值函数名](参数1)
  123. --=============================================
  124. CREATE FUNCTION[标量值函数名]
  125. (
  126. @参数1 参数1类型 --参数1含义说明
  127. )
  128. RETURNS 返回值类型
  129. AS
  130. BEGIN
  131. --定义返回变量
  132. DECLARE @ResultVar 返回值类型
  133. --给返回变量赋值
  134. SET @ResultVar = ……
  135. --返回函数计算结果
  136. RETURN @ResultVar
  137. END
  138. GO
  139. --**********************************************--
  140. PRINT'建立函数[…………]'
  141. --**********************************************--
  142. IF EXISTS(SELECT*FROM sysobjects WHERE id=object_id(N'内联表值函数名')AND xtype in(N'FN',N'IF',N'TF'))
  143. DROP FUNCTION[内联表值函数名]
  144. GO
  145. --=============================================
  146. --程序编写:<你的中文姓名>
  147. --建立日期:<yyyy-mm-dd>
  148. --功能说明:<说明本模块或本脚本的功能>
  149. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  150. --调用示例:SELECT*FROMdbo.[内联表值函数名](参数1)
  151. --=============================================
  152. CREATE FUNCTION[内联表值函数名]
  153. (
  154. @参数1 参数1类型 --参数1含义说明
  155. )
  156. RETURNS TABLE
  157. AS
  158. RETURN
  159. (
  160. --用一条SELECT语句返回结果,此种函数可相当于带参数的视图使用
  161. SELECT * FROM [某表] WHERE 某字段=@参数1
  162. )
  163. GO
  164. --**********************************************--
  165. PRINT'建立函数[…………]'
  166. --**********************************************--
  167. IF EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'多语句表值函数函数名')AND xtype in(N'FN',N'IF',N'TF'))
  168. DROP FUNCTION[多语句表值函数函数名]
  169. GO
  170. --=============================================
  171. --程序编写:<你的中文姓名>
  172. --建立日期:<yyyy-mm-dd>
  173. --功能说明:<说明本模块或本脚本的功能>
  174. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  175. --调用示例:SELECT*FROMdbo.[多语句表值函数函数名](参数1)
  176. --=============================================
  177. CREATE FUNCTION[多语句表值函数函数名]
  178. (
  179. @参数1 参数1类型 --参数1含义说明
  180. )
  181. RETURNS
  182. @多语句表值函数的虚拟表名TABLE
  183. (
  184. [字段名1]字段类型1, --含义说明
  185. [字段名1]字段类型2 --含义说明
  186. )
  187. AS
  188. BEGIN
  189. --往虚拟表中插入记录
  190. INSERT INTO @多语句表值函数的虚拟表名 VALUES(值1,值2)
  191. --返回最后的结果
  192. RETURN
  193. END
  194. GO
  195. --**********************************************--
  196. PRINT'建立触发器[…………]'
  197. --**********************************************--
  198. IF EXISTS(SELECT * FROM sysobjects WHEREid=object_id(N'触发器名') AND xtype in(N'TR'))
  199. DROP TRIGGER[触发器名]
  200. GO
  201. --=============================================
  202. --程序编写:<你的中文姓名>
  203. --建立日期:<yyyy-mm-dd>
  204. --功能说明:<说明本模块或本脚本的功能>
  205. --备注:<可选,如有其它要特别强调或说明的请加此行;如没有则可省略此行>
  206. --=============================================
  207. CREATE TRIGGER[触发器名]
  208. ON 表名
  209. <AFTER或FOR> <INSERT或DELETE或UPDATE>
  210. AS
  211. BEGIN
  212. SET NOCOUNT ON;
  213. --插入触发器内部执行语句
  214. END
  215. GO
  216. --**********************************************--
  217. PRINT'描述接下来的若干段语句的功用,例:开始处理……数据'
  218. --**********************************************--
  219. PRINT'往表[表名]中插入或修改记录'
  220. IF NOT EXISTS(SELECT * FROM 表名 WHERE 主键字段='某值')
  221. INSERT INTO 表名(字段列表)
  222. VALUES(值列表)
  223. ELSE
  224. UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,……
  225. WHERE 主键字段 = '某值'
  226. GO
  227. --**********************************************--
  228. PRINT '结束…………'
  229. --**********************************************--
  230. --**********************************************--
  231. PRINT '--所有操作结束--'
  232. --**********************************************--