随笔分类 -  MS SQL Server

上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 29 下一页
摘要:近段时间,MS SQL方面,一直需要开发动态方面的存储过程或是触发器以及表函数。因为程序设计一开始就是让用户动态添或是删除一个表的字段,然而这个表的相关存储过程或是触发器以及为报表准备的表函数也会随之这个表的字段变化而变化。刚开始时,这个表的字段很少(10个以内),前开发者把这个表的所有存储过程与触发器以及表函数全是写死了。用户每添加一些字段,都需要手动去更改这些存储过程与触发器以及表函数。现在这个表的字段已经高达300个以上,有可能还会增长,因此Insus.NET的业务就是把这此静态全改写为动态处理。然而有一个问题一直困拢至昨天,昨天是星期天本应是休息的,但是这个问题没有解决,因此这天算不上 阅读全文
posted @ 2012-01-16 15:28 Insus.NET 阅读(683) 评论(0) 推荐(1) 编辑
摘要:开发业务需求,需要对一个表作数据分析,由于数据量较大,而且分析时字段会随条件相应变化而变化。因此计划先把数据转插入一个临时表,再对临时表的数据进行分析。问题点是如何动态创建临时表。原先Insus.NET使用下面代码实现:View Code 1DECLARE@sNVARCHAR(MAX)='2IFOBJECT_ID(''[dbo].[#Tb]'')ISNOTNULL3DROPTABLE[dbo].[#Tb]4CREATETABLE[dbo].[#Tb]5(6[xxx]INT,7[xxx]NVARCHAR(50),8'+[dbo].[Column]( 阅读全文
posted @ 2012-01-14 14:41 Insus.NET 阅读(1606) 评论(1) 推荐(2) 编辑
摘要:两个自定义函数,一个是返回一个Table,另一个是直接返回名称。udf_WeekDayName CREATEFUNCTION[dbo].[udf_WeekDayName]()RETURNS@WeekDayNameTABLE([Id]INT,[WeekDayName]NVARCHAR(15))ASBEGININSERTINTO@WeekDayName([Id],[WeekDayName])VALUES(0,'Saturday'),(1,'Sunday'),(2,'Monday'),(3,'Tuesday'),(4,'Wedn 阅读全文
posted @ 2012-01-03 09:33 Insus.NET 阅读(455) 评论(0) 推荐(2) 编辑
摘要:有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段。这个功能也许没有问题,但是它原有插入与更新的两个存储过程,也需要一起修改。因此Insus.NET实现了它,因此此文会让你了解到怎样动态为一个表添加删除字段以及动态修改它的存储过程。首先需要建一个表[A],这个表只有两个字段,一个是[ID]自动增长,另一个是表[B]的字段名,存储的每一笔记录,即是用户需要操作的表[B]的字段。这个表[A]需要建添加,更新,以及删除的存储过程,方便用户在后台方便操作,还有重点部分,需要写触发器。如有记录对表[A]进行添加,更新或是删除时,它会触发去作表[B]相应操作,还要去修改表[B]的存储过程。动态 阅读全文
posted @ 2011-11-11 13:31 Insus.NET 阅读(797) 评论(1) 推荐(2) 编辑
摘要:获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可。udf_FirstDayOfMonthCREATEFUNCTION[dbo].[udf_FirstDayOfMonth](@DateDATE)RETURNSDATETIMEASBEGINRETURNCAST(DATEADD(day,1-DAY(@Date),@Date)ASDATETIME)END或者,用DATEDIFF计算指定日期与日期开始之时,相隔几个月,然后再DATEADD加上这个相隔月份数,从零开始。udf_FirstDayOfMonthCREATEFUNCTION[dbo].[udf_Fir 阅读全文
posted @ 2011-09-11 12:55 Insus.NET 阅读(2164) 评论(0) 推荐(1) 编辑
摘要:有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。View Code --创建一个临时表,将会存储连续日期的记录CREATETABLE#temp(IDDVARCHAR(10),SDATEDATETIME)DECLARE@sDDATETIME--开始日期DECLARE@eDDATETIME--结束日期--在记录中,找出开始与结束日期SELECT@sD=MIN([SDATE]),@eD=MAX([SDATE])FROM[TT]DECLARE@NINT=0--宣告一个变量,存储累记录数--循环日期 阅读全文
posted @ 2011-09-10 15:34 Insus.NET 阅读(1016) 评论(1) 推荐(1) 编辑
摘要:今天查看以前专案的数据库自定义函数,温习温习。发现其中有一个函数,是获取月份的天数的自定义函数。如下:udf_DaysInMonthCREATEFUNCTION[dbo].[udf_DaysInMonth](@DateDATETIME)RETURNSINTASBEGINDECLARE@dimASTABLE(MINT,DyINT)INSERTINTO@dimVALUES(1,31),(3,31),(5,31),(7,31),(8,31),(10,31),(12,31),(4,30),(6,30),(9,30),(11,30),(2,CASEWHEN(YEAR(@Date)%4=0ANDYEAR( 阅读全文
posted @ 2011-09-10 10:27 Insus.NET 阅读(1097) 评论(0) 推荐(1) 编辑
摘要:如果你有看到这篇,http://www.cnblogs.com/insus/archive/2011/09/09/2172419.html,会看到Insus.NET在SQL Server2008使用最简单的方法取到午夜时间值。那你也许会问及,怎样获取当前系统日期的最大时间值,如yyyy-MM-dd 23:59:59.997。我们可以使用DATEADD函数,来实现,以当前日期的午夜时间值加一天,即得到第二天的午夜时间值,然后再减去2秒,即可以获取当前系统日期的最大时间值。View Code DECLARE@DateDATETIME=CURRENT_TIMESTAMP --当前系统日期时间DECL 阅读全文
posted @ 2011-09-09 16:53 Insus.NET 阅读(1844) 评论(0) 推荐(1) 编辑
摘要:MS SQLServer,如何获取当前系统日期的午夜的时间值:下面是Infor syteline 8.02的自定议函数:MidnightOfALTERFUNCTION[dbo].[MidnightOf](@DateDATETIME)RETURNSDATETIMEASBEGINRETURN(dateadd(year,(datepart(year,@Date)-2000),dateadd(month,(datepart(month,@Date)-1),dateadd(day,(datepart(day,@Date)-1),'2000'))))END下面是此本书http://imag 阅读全文
posted @ 2011-09-09 13:11 Insus.NET 阅读(927) 评论(0) 推荐(2) 编辑
摘要:生产系统分早晚班问题,经约定,每天七点之前,所有生产记录,算前一天处理。因为系统记录产生的日期,是获取当前日期,需要改写一下,七点之前的取到的当天日期需要减去1天。解决方法可以多种,前台程序处理,或是可以数据库中处理。程序处理:GetGenerateDate stringGetGenerateDate(){DateTimedateTime1=DateTime.Now;DateTimedateTime2=Convert.ToDateTime(dateTime1.ToString("yyyy-MM-dd")+""+"07:00:00"); 阅读全文
posted @ 2011-08-29 10:47 Insus.NET 阅读(387) 评论(0) 推荐(1) 编辑
摘要:最近完成的小系统,会议室预定系统。可预览:技术分析:1,准备一个表,存储会议室,可以添加,编辑,启用或禁用(为控制某一会议室是否显示给用户在预定时是否可见),删除功能,可有可无,如果实现,当删除时,需要写触发器,把此预定过此会议室的记录一同删除。2,准备两个表,存储时间记录(id,TimeName),每半个小时,如00:00,00:30,01:00直至23:30;另一个表是存储星期(id,weekName),你可以存储中文或是英文星期名称。这两个表均是为用户选择时间而准备。3,预定你可以使用用户登录功能,登录成功之后,才可以预定,这样可以实现不同的人可以管理好自己的预定记录。4,会议类型分为一 阅读全文
posted @ 2011-08-27 08:52 Insus.NET 阅读(4851) 评论(2) 推荐(1) 编辑
摘要:数据表,其中有一个字段存储星期名称,如Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday。不知那一天,客户把环境语言改为中文了,原本判断当天的的星期名称是否与存储的名称是否一样,结果没有一天是否判断正常的。因为环境语言变化了,如果今天执行... 阅读全文
posted @ 2011-08-24 17:03 Insus.NET 阅读(423) 评论(2) 推荐(2) 编辑
摘要:今天在论坛上看到一个问题,如下:解决这个问题,Insus.NET写了一个函数,可以方便以后的扩展,如果数值出现TB或是或更高时,可以只改这个函数即可。udf_OrderLimitSizeSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERFUNCTION[dbo].[udf_OrderLimitSize](@OvNVARCHAR(30))RETURNSdecimal(18,6)ASBEGIN--如果长度少于等于2的数值为返回NULLIF(LEN(@Ov)<=2)RETURNNULL--宣告两个变量DECLARE@vDECIMAL(18,6),@nD 阅读全文
posted @ 2011-08-21 16:40 Insus.NET 阅读(479) 评论(0) 推荐(1) 编辑
摘要:以前曾写了一个流水号的实现功能,它是在SQL中处理的。可以参考:http://www.cnblogs.com/insus/articles/1702583.html这段时间开发,又涉及到使用流水号功能。不同的条件,使用二种前缀。后面的流水号还是要流水的功能,要求再加上位数已经有所变化了。为了解决此问题,只有添加另外一个自定义函数在sql中。改写如下,可参考:udf_SeriesNumber SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEFUNCTION[dbo].[udf_SeriesNumber](@NumberNVARCHAR(12),--原 阅读全文
posted @ 2011-08-21 08:54 Insus.NET 阅读(2908) 评论(1) 推荐(1) 编辑
摘要:实现一个AuditLog的功能,是B/S结构专案。每个用户可以登录系统,在程序中操作数据(添加,更新和删除)需要实现记录操作跟踪。是谁添加,更新和删除的,这些信息将会插入至AuditLog表中。一般情况之下,在SQL的触发器中,只能取到(SQL验证sa;Windows验证Domain\xxx)。这些用户名,达不到效果,不能真正反映到是谁操作的。下面是让你清楚,怎样实现在SQL触发器或存储过程中获取在程序登录的用户,是在插入,更新或删除的存储过程,把登录程序当前用户传入进去。在存储过程中,再把相关信息存入局部(#)临时表中,这样子,在触发器即可获取了。下面代码示例,以一个[Member]表作例, 阅读全文
posted @ 2011-07-21 13:51 Insus.NET 阅读(2420) 评论(2) 推荐(1) 编辑
摘要:原本程序是一个查询文本框,现用户要求改程序,要如google或baidu输入一样,有自动完成功能。下图是已经完成的效果:实现使用了Web Service技术与Ajax的AutoCompleteExtender的控件。在数据库中,写好存储过程:usp_Fqa_LotNumberCompletionList CREATEPROCEDURE[dbo].[usp_Fqa_LotNumberCompletionList](@PrefixTextNVARCHAR(4000),@TopCountINT)ASDECLARE@WNVARCHAR(4000)=@PrefixText+'%'EXEC 阅读全文
posted @ 2011-07-16 14:40 Insus.NET 阅读(2703) 评论(1) 推荐(1) 编辑
摘要:这两个触发器,如果弄不清楚,也许会有些混淆,下面列出两个触发器的概要: AFTER (FOR) INSERT AFTER (FOR) UPDATE AFTER (FOR) DELETE INDSTEAD OF INSERT INSTEAD OF UPDATE INSTEAD OF DELETE 更详 阅读全文
posted @ 2011-07-12 11:16 Insus.NET 阅读(1678) 评论(0) 推荐(2) 编辑
摘要:此篇为Repeater控件嵌套Repeater控件教程,你可以从下面相关链接下载到教程视频与源程序。视频:文件格式:.wmv;大小21,401KB;长度:00:16:58。 下载地址:http://download.cnblogs.com/insus/ASPDOTNET/RepeaterEmbedRepeater.rar源程序:下载地址:http://download.cnblogs.com/insus/ASPDOTNET/RepeaterEmbedRepeater_source.rar另外,为了节省空间,其中BIN目录的一些DLL文件已经删除,但你可以从下面地址下载:http://www.c 阅读全文
posted @ 2011-07-04 11:05 Insus.NET 阅读(1607) 评论(0) 推荐(1) 编辑
摘要:应网友email问及,只看过Insus.NET实现过DropDownList控件的两级联动。是否在有时间的时候做一个三级联动的教程。昨天休息在家,完成这个教程。你可以下载Demo: 文件格式:.wmv;大小2,638KB;长度:00:03:20。 下载地址:http://download.cnblogs.com/insus/ASPDOTNET/MultiDropDownListSelectDemo.rar实现过程视频:文件格式:.wmv;大小39,161,638KB;长度:00:29:54。 下载地址:http://download.cnblogs.com/insus/ASPDOTNET/Mu 阅读全文
posted @ 2011-07-04 09:47 Insus.NET 阅读(4866) 评论(7) 推荐(1) 编辑
摘要:一般情况之下,存储日期至数据库中,不必在意它的显示格式,只要是日期即可,在程序中显法时,才会去控制它的显示格式。但是,当你是开发SQL程序,你要求不了前台程序员按照你的想法去做,把日期显示某种格式,他们只管调用你的存储过程。解决这样的问题,我们把SQL输出结果就控制为最终结果,有关这方面企业内网程式应用较多。你可以参考下面SQL自定义函数,需要的地方调用即可。View Code CREATEFUNCTION[dbo].[ConvertDate](@InputDateDATETIME,--输入日期,或是原格式日期@DateFormatNVARCHAR(10)--日期显示格式)RETURNSNVA 阅读全文
posted @ 2011-06-30 13:40 Insus.NET 阅读(825) 评论(0) 推荐(1) 编辑

上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 29 下一页