随笔分类 -  MS SQL Server

摘要:INTERSECT 交集集合运算,把集合共同拥有的记录返回来。为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(ColName1NVARCHAR(50),ColName2NVARCHAR(50))INSERTINTO@T1VALUES('tc1','tc2');INSERTINTO@T1VALUES('tc3 阅读全文
posted @ 2010-12-31 18:54 Insus.NET 阅读(857) 评论(1) 推荐(2) 编辑
摘要:UNION是并集,是把两个集合中所有元素的集合。集合运算有两个选项,即是DISTINCT和ALL, 当您使用 UNION时,也等于UNION DISTINCT,这个选项的结果,是消除重复的记录行,返回一个集合。而后者UNION ALL则是返回多集中所有记录行。下面演示UNION(DISTINCT),为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(Col 阅读全文
posted @ 2010-12-31 18:24 Insus.NET 阅读(458) 评论(1) 推荐(2) 编辑
摘要:SQL Server SELECT语句,逻辑处理顺序,虽然SELECT位于语句最前面,它在逻辑处理中,基本上是最后一个被执行的部分。下面列出查询子句在逻辑上处理顺序:1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT6. ORDER BY 阅读全文
posted @ 2010-12-31 16:12 Insus.NET 阅读(431) 评论(1) 推荐(2) 编辑
摘要:INFORMATION_SCHEMA视图可以检索数据库中的对象的元数据。您可以直接在当前实例的数据库调用需求的数据。另外值得称好的是,在SQL 2005和SQL 2008这些Information Schema views符合ISO标准。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT*FROMINFORMATION_SCHEMA.CHECK_CONSTRAINTS COLUMN_DOMAIN_USAGE COLUMN_PRI 阅读全文
posted @ 2010-12-31 13:33 Insus.NET 阅读(1374) 评论(1) 推荐(2) 编辑
摘要:以前曾经在asp.net实现记录排序功能,参考:http://www.cnblogs.com/insus/articles/1406440.html前端实现,写得很复杂。现在,把它改为触发器来实现,那就简单多了。由于时隔已久,原实例样版代码已经找不到了,只有再写一样功能一样的表。这个表实现与记录插入功能,可以参考相关链接:http://www.cnblogs.com/insus/articles/1921391.htmlhttp://www.cnblogs.com/insus/articles/1921465.htmlhttp://www.cnblogs.com/insus/articles/ 阅读全文
posted @ 2010-12-31 10:57 Insus.NET 阅读(1237) 评论(1) 推荐(2) 编辑
摘要:对于例子http://www.cnblogs.com/insus/articles/1921465.html写的触发器有bug,当使用http://www.cnblogs.com/insus/articles/1921618.html例子中的INSERT VALUES的语法头两种插入记录时,[Num]字段只做更第一笔,其他[Num]值均为NULL,解决办法,只好修改触发器,代码如下,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETA 阅读全文
posted @ 2010-12-30 18:06 Insus.NET 阅读(588) 评论(0) 推荐(2) 编辑
摘要:在http://www.cnblogs.com/insus/articles/1921391.html这个例子,我们创建了一个表,现在来演示SQL Server的INSERT VALUES语法,如果使用INSERT早期语法,插入十笔记录,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->INSERTINTO[dbo].[OrderDemo]([Name])VALUES('Title1');INSERTINTO[dbo].[O 阅读全文
posted @ 2010-12-30 13:18 Insus.NET 阅读(1621) 评论(1) 推荐(2) 编辑
摘要:上一个例子http://www.cnblogs.com/insus/articles/1921391.html中,触发器写得有点不好,因为没有考虑到主键值是自动增长的,如果出现有记录被删除了,这个[Num]字段值就不能顺序排列了,会出现空缺。因此需要修改一下这个触发器(TRIGGER),代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFEXISTS(SELECT[name]FROMsysobjectsWHERE[name]='t 阅读全文
posted @ 2010-12-30 10:49 Insus.NET 阅读(494) 评论(1) 推荐(2) 编辑
摘要:下面表[OrderDemo]有一个字段[Num],此字段作为排序字段,在插入时它的值为主键一样,但不能设为IDENTITY自动增长,因为它有可能被更新为其它值。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('[dbo].[OrderDemo]')ISNOTNULLDROPTABLE[dbo].[OrderDemo]GOCREATETABLE[dbo].[OrderDemo](OrderDemoId 阅读全文
posted @ 2010-12-30 10:10 Insus.NET 阅读(663) 评论(1) 推荐(2) 编辑
摘要:用户反映,系统操作日志会使用数据库快速增大,情况可参考下图,问题分析,整个系统每个页面,都有写记录用户操作代码,修改或禁用这个代码,看来是不可能的。在原有系统参数表添加一个选项,可以让管理员可选项,“是否启用操作日志”。这样子,就可以更改操作记录的存储过程,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[usp_Op 阅读全文
posted @ 2010-12-29 10:12 Insus.NET 阅读(535) 评论(1) 推荐(2) 编辑
摘要:自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Functions)和表值UDF(Table-valued Functions),前者只返回单个数据值,而后者则返回一个表。前面演示了标量自定义函数,http://www.cnblogs.com/insus/articles/1918983.html ,现在下面两个实例均演示表值自定义函数,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- 阅读全文
posted @ 2010-12-28 19:19 Insus.NET 阅读(1345) 评论(0) 推荐(2) 编辑
摘要:自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Functions)和表值UDF(Table-valued Functions),前者只返回单个数据值,而后者则返回一个表。下面示例是,是属于前者,返回单个值。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEFUNCTION[dbo].[ 阅读全文
posted @ 2010-12-28 19:09 Insus.NET 阅读(1637) 评论(0) 推荐(2) 编辑
摘要:用户反映,PO号码出现大小写情况,希望不管用户输入大写还是小写,都需要显示大写。问题如下截图:解决问题,是不能强制用户一定输入大写,只好在存储过程处理了,把这个参数使用UPPER()处理一下。有关Upper更详细资料,参考:http://msdn.microsoft.com/zh-cn/library/ms180055.aspxCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@ponumNVARCHAR(20)='Po1 阅读全文
posted @ 2010-12-28 18:53 Insus.NET 阅读(1459) 评论(0) 推荐(2) 编辑
摘要:为了演示触发器,下面例子分别实现插入,删除触发器。示例之前,先创建两个表,关关联起来。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--创建一个表[Topic]CREATETABLEdbo.Topic(TopicIdINTIDENTITY(1,1)PRIMARYKEYNOTNULL,TitleNVARCHAR(300)NOTNULL,ContentNVARCHAR(2000)NOTNULL,AuthorNVARCHAR(50)NOTNU 阅读全文
posted @ 2010-12-28 13:47 Insus.NET 阅读(726) 评论(1) 推荐(2) 编辑
摘要:根据用户自定义需求报表。只有在SQL写好存储过程,然后把结果集显示在GridView中。报表做出来,用户接收了。有把这个效果分享给一些网友,结果网友都会问回一个问题,这个效果如何实现的。现在把一部分存储过程代码帖出来,分享一下,其实很简单。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--如果抽检数大于零和比率大于等于零IF((@RCount>0)AND(ISNULL(@Rate,0)>=0))BEGINBEGIN--定义一 阅读全文
posted @ 2010-12-28 10:32 Insus.NET 阅读(749) 评论(0) 推荐(2) 编辑
摘要:前段时间,曾经写过一个例子,http://www.cnblogs.com/insus/articles/1916558.html是使用OUTPUT来记录更新前后的值,现在可以使用SQL Server的触发器来实现。演示,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--创建一个UPDATE触发器CREATETRIGGER[dbo].[tri_Member_Udate]ON[dbo].[Member]FORUPDATEASBEGIN--宣 阅读全文
posted @ 2010-12-27 19:18 Insus.NET 阅读(605) 评论(1) 推荐(2) 编辑
摘要:WHILE是SQL Server另一个基本流程控制元素,用于循环执行代码。WHILE后面的条件为TRUE时,循环执行指定的SQL语句或语句块,如果WHILE后的条件为FALSE或UNKNOWN时,循环终止。演示,更详细例子,请参阅http://www.cnblogs.com/insus/articles/1914346.html:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--宣告一个INT类型变量,并赋值DECLARE@FirstC 阅读全文
posted @ 2010-12-27 18:33 Insus.NET 阅读(370) 评论(1) 推荐(2) 编辑
摘要:IF...ELSE元素在SQL Server中,是用于控制代码程流(逻辑处理)。如果条件为TRUE,则执行指定的语句或语句块;如果条件为FALSE或UNKNOWN则执行指定的另外语句或语句块。ELSE部分是可选的。演示:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--判断存储过程是否存在IFOBJECT_ID('[dbo].[usp_Employee_Search]','u')ISNOTNULL--如果 阅读全文
posted @ 2010-12-27 18:08 Insus.NET 阅读(584) 评论(1) 推荐(2) 编辑
摘要:不能在同一批处理中编译的语句,为了解决这个问题,需要在每个处理单元之间添加一个GO。如下:CREATE DEFAULT,CREATE RULE,CREATE FUNCTION,CREATE PROCEDURE,CREATE TRIGGER,CREATE SCHEMA,CREATE VIEW例子,可以参考:http://www.cnblogs.com/insus/articles/1917870.htmlIF语句之后添加一个GO命令,把IF与CREATE PROCEDURE分隔到两个不同的批处理执行。 阅读全文
posted @ 2010-12-27 17:38 Insus.NET 阅读(844) 评论(1) 推荐(2) 编辑
摘要:当一个存储过程参数接收一个Array时,我们可以用下面方法来处理,可以很方便实现。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->CREATEPROCEDURE[dbo].[usp_Prod_GetByType](@ArrayIDNVARCHAR(100))AS--处理传入参数DECLARE@ParamsNVARCHAR(100)=REPLACE(@ArrayID,',',''','' 阅读全文
posted @ 2010-12-27 15:35 Insus.NET 阅读(2269) 评论(1) 推荐(3) 编辑