随笔分类 -  MS SQL Server

摘要: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 阅读(589) 评论(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 阅读(852) 评论(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 阅读(2276) 评论(1) 推荐(3) 编辑
摘要:SELECT INTO语句,创建一个目标表,把SELECT结果集插入至这个目标表中。这个目标表是在执行时产生,并非是在执行前产生,即是说不能向已经存的目标表插入数据。它会把来源表的基本结构进行复制。但不能复制约束,索引和触发器。演示,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--判断目标表是否存在,存在首先DROP掉IFOBJECT_ID('[dbo].[TT]','u')ISNOTNULLDROPTAB 阅读全文
posted @ 2010-12-27 14:19 Insus.NET 阅读(411) 评论(1) 推荐(2) 编辑
摘要:INSERT SELECT语句是可以把SELECT查询返回结果集插入目标数据表中。演示,首先创建一个临时表,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('#t')ISNOTNULLDROPTABLE#tCREATETABLE#t([MemberId][int]NOTNULL,[Name][nvarchar](100)NOTNULL,[Job][bit]NULL)使用INSERT SELECT语法,C 阅读全文
posted @ 2010-12-27 13:44 Insus.NET 阅读(1486) 评论(1) 推荐(2) 编辑
摘要:INSERT EXEC语句可以把存储过程或动态SQL批处理返结果集插入目标数据表中,下面例子是以存储过程返回结果集插入一个表变量中,演示例子,首选创建一个存储过程,这个存储过程需要传入一个参数,是否在职的Member。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('dbo.usp_Member_Job','p')ISNOTNULLDROPPROCEDUREdbo.usp_Membe 阅读全文
posted @ 2010-12-27 13:16 Insus.NET 阅读(1405) 评论(1) 推荐(2) 编辑
摘要:把变量字段动态添加至数据表中,为了演示这个例子,首先创建一个临时表,这个临时表只产生一个IDENTITY字段,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->BEGINIFOBJECT_ID('[dbo].[#DummyTable]')ISNOTNULLDROPTABLE[dbo].[#DummyTable]CREATETABLE[dbo].[#DummyTable]([ID]INTIDENTITYNOTNULL)END我们宣 阅读全文
posted @ 2010-12-27 10:56 Insus.NET 阅读(1371) 评论(1) 推荐(2) 编辑
摘要:写存储过程,我们会经常需要动态创数据表,如临时表等。下面例子是使用Execute来创建一个数据表。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--宣告一个变量DECLARE@tableNameNVARCHAR(30)='DummyTableName'动态创建表,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeH 阅读全文
posted @ 2010-12-27 10:26 Insus.NET 阅读(783) 评论(1) 推荐(2) 编辑
摘要:SQL Server,可以使用SCOPE_IDENTITY方法取得最后一笔记录的Identity号码,但是如果想取得批量插入的IDENTITY号码,那得想些这个SCOPE_IDENTITY就有些困难了,只有把inserted虚拟表导入到一个真实存在的表,临时表或是表变量中,方可解决问题。下面代码,是return最后一笔的IDENTITY号码,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->INSERTINTOdbo.MemberVALUES( 阅读全文
posted @ 2010-12-25 14:21 Insus.NET 阅读(1614) 评论(0) 推荐(1) 编辑
摘要:SQL Server 2008可以创自己的表类型,方便应用到重复使用的地方,这样就不必重复定义表代码。下面是定义表类型的例子,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFTYPE_ID('dbo.MyReport')ISNOTNULLDROPTYPEdbo.MyReportCREATETYPEdbo.MyReportASTABLE([Id][int],[OldValue][decimal](18,6),[NewValu 阅读全文
posted @ 2010-12-25 11:22 Insus.NET 阅读(1951) 评论(1) 推荐(2) 编辑
摘要:参考前一个实例使用OUTPUT保存更新记录前后数据,改用一个表变量来实现。首先定义一个表变量:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@SalaryReportTABLE([MemberId][int],[Name][nvarchar](100),[OldSalary][decimal](18,6),[NewSalary][decimal](18,6))然后把更新OUTPUT结果INTO到这个表变量中:Code high 阅读全文
posted @ 2010-12-25 10:38 Insus.NET 阅读(1100) 评论(1) 推荐(2) 编辑
摘要:年底了,职员都有长薪金的机会,人事部需要做一份报表,就是显示薪金前后值的一份报表。为了实现这样的功能,使用SQL的OUTPUT功能,即可实现原薪金与新薪金比较的报表。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT[MemberId],[Name],[Salary]FROM[dbo].[Member]结果MemberId Name Salary1 Mr. John 2200.002 Mr. Joe 2500.00使用OUTPUT功 阅读全文
posted @ 2010-12-25 09:51 Insus.NET 阅读(647) 评论(0) 推荐(1) 编辑
摘要:网站搬迁之后,备份数据库的功能出错了,原因是原来数据库与网站同一台服务器,现在是数据库与网站分别在不同服务器,引起在备分时,找不到路径或是没有权限存储。最初版本的存储过程:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[usp_Backup_DataBase](@BackupDataBaseNamevarchar(1 阅读全文
posted @ 2010-12-24 18:13 Insus.NET 阅读(4159) 评论(0) 推荐(2) 编辑
摘要:以前实现备份文件管理,有一个删除功能,是使用asp.net来实现删除备份文件。这段时间改用在SQL Server存储过程去实现。您可以参考到这个存储过程完整代码。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N'[dbo].[usp_DeleteFile]')ANDtypein(N'P',N&# 阅读全文
posted @ 2010-12-24 17:31 Insus.NET 阅读(465) 评论(0) 推荐(2) 编辑
摘要:SQL Server使用xp_fileexist扩展存储过程,可在判断文件是否在。在创建自定义函数时,因无法使用临时表,所以下例使用了一个表变量。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@OutInfoTABLE([FILE_EXISTS]INTNOTNULL,[FILE_IS_DIRECTORY]INTNOTNULL,[PARENT_DIRECTORY_EXISTS]INTNOTNULL)INSERTINTO@Ou 阅读全文
posted @ 2010-12-24 16:38 Insus.NET 阅读(722) 评论(0) 推荐(2) 编辑
摘要:使用System.IO名称空间下的DriveInfo类别,可以获取磁盘相关信息。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->privateDataTableGetDriveInfo(stringdriveName){//new一个实例表DataTabledataTable=newDataTable();DataColumndataColumn;//new一个字段dataColumn=newDataColumn();//字段存储的数据类 阅读全文
posted @ 2010-12-24 13:21 Insus.NET 阅读(734) 评论(1) 推荐(2) 编辑
摘要:下面这段SQL code是获取SQL Server默认的备份目录,创建一个用户自定义函数。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('dbo.udf_SQLServerBackupDirectory')ISNOTNULLDROPFUNCTIONdbo.udf_SQLServerBackupDirectoryGOCREATEFUNCTIONdbo.udf_SQLServerBackupDirec 阅读全文
posted @ 2010-12-23 15:37 Insus.NET 阅读(1185) 评论(0) 推荐(1) 编辑
摘要:SQL Server的master数据库中有一个扩展存储过程xp_fixeddrives,可以获取硬盘分区与分区剩余容量,参考下面代码:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('#TempDrive')ISNOTNULLDROPTABLE#TempDriveCREATETABLE#TempDrive([DriveName]NVARCHAR(10),[DriveFreeSpace]BIGINT 阅读全文
posted @ 2010-12-23 10:46 Insus.NET 阅读(470) 评论(0) 推荐(2) 编辑
摘要:开发过程中,需要用到26个字母的一个临时表,一开始想到的方法如下(SQL Server 2008 R2执行):代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('#TempDriveInfo')ISNOTNULLDROPTABLE#TempDriveInfoCREATETABLE#TempDriveInfo([DriveInfoId]TINYINTIDENTITYPRIMARYKEYNOTNULL,[ 阅读全文
posted @ 2010-12-23 08:35 Insus.NET 阅读(1043) 评论(1) 推荐(2) 编辑
摘要:前段时间写了一些SQL语句或存储过程,可以参考此篇:http://www.cnblogs.com/insus/articles/1899336.html原本只是为了自己方便工作,但是用户永远满足不了,他们也有跟自己需求一样,只有写成一个类别,并在asp.net界面显示出来。Authorizations.cs 代码片断:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.G 阅读全文
posted @ 2010-12-20 18:08 Insus.NET 阅读(746) 评论(1) 推荐(1) 编辑