资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
SQL Server2005 中的十个最重要的T-SQL增强功能讲座的总体内容:关于关于 MicrosoftMicrosoft SQL Server SQL Server TMTM 2005 Transact-SQL 2005 Transact-SQL 数据库语言中的十个最重要的增强功能的总体介数据库语言中的十个最重要的增强功能的总体介绍和概括绍和概括通过清晰的通过清晰的, ,简捷的景象分析简捷的景象分析, ,实例介绍和演示来详实例介绍和演示来详细的总结和解析每一个功能的特性和运用细的总结和解析每一个功能的特性和运用参加讲座的前提条件最好具备关于最好具备关于Microsoft Transact SQL Microsoft Transact SQL 数据库语言数据库语言的相关知识和相应的工作经验的相关知识和相应的工作经验Level 200讲座议程新型超大数据类型新型超大数据类型 Large-Large-Value Data TypesValue Data Types先进的错误处理先进的错误处理 Error Error HandlingHandling通用表表达式通用表表达式 Common Common Table ExpressionsTable ExpressionsDDL DDL 触发器触发器 DDL TriggersDDL Triggers新的排序函数新的排序函数 Ranking Ranking FunctionsFunctions新的关系运算符新的关系运算符 PIVOT/UNPIVOT/APPLYPIVOT/UNPIVOT/APPLY新的新的结果集结果集运算符运算符 EXCEPT and INTERSECTEXCEPT and INTERSECTOUTPUTOUTPUT在在DMLDML中的特别中的特别运用运用TOP TOP 增强功能增强功能T-SQLT-SQL和和CLRCLR的集成的集成大容量存储数据类型关于关于 SQL Server2000SQL Server2000任何超过任何超过8KB8KB的大容量数据的大容量数据( (文档文档, ,图片图片, ,音像音像) )必须必须 要存储要存储在在 texttext, , ntextntext, , 和和 imageimage 数据类型中数据类型中任何超过任何超过8KB8KB数据面临非常有限的操作功能数据面临非常有限的操作功能SQL Server2005 SQL Server2005 提供的提供的 MAX MAX 定义符定义符增强并且延伸了增强并且延伸了varcharvarchar, , nvarcharnvarchar 和和 varbinaryvarbinary 传统数传统数据类型的存储能力据类型的存储能力varchar(maxvarchar(max), ), nvarchar(maxnvarchar(max) ), , 和和 varbinary(maxvarbinary(max) ) 从此成从此成为标准为标准T_SQLT_SQL的大容量存储数据类型的大容量存储数据类型最多可存储到场最多可存储到场2GB2GB的大容量数据的大容量数据大容量存储数据类型 (继续)关于大或小容量数据类型的统一的编程模式关于大或小容量数据类型的统一的编程模式对比对比 ComparisonsComparisons连接连接 ConcatenationConcatenation变量变量 VariablesVariables参数参数 ParametersParameters触发器触发器 TriggersTriggers集合集合 AggregatesAggregates排序和索引排序和索引 Index Included ColumnsIndex Included Columns当小容量数据增长并且超越当小容量数据增长并且超越8K8K极限时极限时, ,整个过度过程十分平整个过度过程十分平滑和简捷滑和简捷通过通过 . .WRITEWRITE ( (expressionexpression, , Offset Offset, , LengthLength) )可对大小容量可对大小容量数据实行局部或正体的直接更改数据实行局部或正体的直接更改对于小于对于小于8K8K的数据的数据, , 相比相比texttext, , ntextntext 和和 imageimage存取效率明显存取效率明显提高提高建议取代对建议取代对texttext, , ntextntext 和和 imageimage的应用的应用大容量存储数据类型实例演示 CREATE TABLE MyPublications(PublicationID int, Abstract nvarchar(max), Publication varbinary(max);UPDATE MyPublicationsSET Abstract .WRITE (Nauthor, 20, 6)WHERE PublicationID = 1;Use .WRITE (expression, Offset, Length) to update the word writer (Offset=20, Length=6) with author in the Abstract column关于错误处理的提高在在 SQL Server2000SQL Server2000ERROR ERROR 返回最后一个执行的返回最后一个执行的T-SQLT-SQL语句的错误代码语句的错误代码ERROR ERROR 的值会随着每一个的值会随着每一个T-SQLT-SQL语句而被更新语句而被更新在在SQL Server2005SQL Server2005中的丰富的异常处理框架中的丰富的异常处理框架TRYCATCHTRYCATCH 配置配置 提供捕获所有提供捕获所有SQL SERVERSQL SERVER异常或错误的功能异常或错误的功能可以捕获和处理过去会导致批处理终止的错误,从而阻止批处理的中断提供处理和登录异常或错误的功能提供处理和登录异常或错误的功能当错误发生时,阻止T-SQL交易环境的丢失可以对错误的具体内容进行读取可以对错误的具体内容进行读取TRYCATCH语法和定义任何在任何在TRYTRY模块中产生的错误会将控制的流程转移模块中产生的错误会将控制的流程转移到到CATCHCATCH模块中模块中TRYCATCH TRYCATCH 配置是可以被包含和兼容的配置是可以被包含和兼容的BEGIN TRY sql_statement | statement_block END TRYBEGIN CATCH sql_statement | statement_block END CATCH ; TRYCATCH (继续)可处理所有付值给可处理所有付值给ERRORERROR的的T-SQLT-SQL运行过程中的错误运行过程中的错误T-SQLT-SQL语句中断错误语句中断错误T-SQLT-SQL水平中断错误水平中断错误T-SQLT-SQL批处理中断错误批处理中断错误T-SQLT-SQL交易中断错误交易中断错误不处理以下的情况不处理以下的情况: :任何严重性在任何严重性在0-100-10范围的警告和报告性的信息范围的警告和报告性的信息任何严重性在任何严重性在20-2520-25范围的中断数据库连接的错误范围的中断数据库连接的错误注意事项注意事项KILLKILL语句语句RAISERRORRAISERROR 可以用来自行生成错误可以用来自行生成错误控制流程会转移到最接近的控制流程会转移到最接近的CATCHCATCH模块中模块中错误信息的各类函数错误信息可通过运用以下函数而在错误信息可通过运用以下函数而在CATCHCATCH模块中模块中被获取被获取ERROR_NUMBER()ERROR_NUMBER()ERROR_SEVERITY()ERROR_SEVERITY()ERROR_STATE()ERROR_STATE()ERROR_LINE()ERROR_LINE()ERROR_PROCEDURE()ERROR_PROCEDURE()ERROR_MESSAGE()ERROR_MESSAGE()交易信息交易信息任何交易中断的错误都会最终导致成一个未成功交易任何交易中断的错误都会最终导致成一个未成功交易XACT_STATE()XACT_STATE() 总是返回任何交易的状态总是返回任何交易的状态(1, 0, -1)(1, 0, -1)错误处理实例演示 BEGIN TRY- Divide-by-zero error shifts control flow to the CATCH blockSELECT 1/0;END TRYBEGIN CATCH- Retrieve error information SELECT ERROR_NUMBER() AS ErrNumber,ERROR_SEVERITY() AS ErrSeverity,ERROR_STATE() AS ErrState,ERROR_PROCEDURE() AS ErrProc,ERROR_LINE() AS ErrLine,ERROR_MESSAGE() AS ErrMessage;END CATCH;ErrNumberErrSeverityErrStateErrProcErrLineErrMessage8134161NULL3Divide by zero error encountered.错误处理实例演示 (继续)USE AdventureWorks; GO CREATE PROCEDURE usp_GetErrorInfo ASSELECT ERROR_NUMBER() AS ErrNumber,ERROR_SEVERITY() AS ErrSeverity,ERROR_STATE() as ErrState,ERROR_LINE() as ErrLine,ERROR_PROCEDURE() as ErrProc,ERROR_MESSAGE() as ErrMessage;GOBEGIN TRYBEGIN TRANSACTION;- Generate a constraint violation errorDELETE FROM Production.Product WHERE ProductID = 980;COMMIT TRANSACTION;END TRYBEGIN CATCHEXECUTE usp_GetErrorInfo; IF XACT_STATE() 0 ROLLBACK TRANSACTION;END CATCH;通用表表达式样 (CTE)通用表表达式(通用表表达式(CTECTE)是一个可以由定义语句引用的临时)是一个可以由定义语句引用的临时表命名的结果集表命名的结果集; ; 可视为类似于视图和派生表混合功能的改可视为类似于视图和派生表混合功能的改进版本进版本 它可以被定义在任何一个它可以被定义在任何一个SELECT, INSERT, UPDATE, SELECT, INSERT, UPDATE, DELETE, DELETE, 或或 CREATE VIEWCREATE VIEW的的T-SQLT-SQL语句中语句中它可以被自己引用并在查询中多次被引用它可以被自己引用并在查询中多次被引用用途用途: :递归查询递归查询替代那些不需要存储在元数据中的替代那些不需要存储在元数据中的视图视图聚合派生表生成的表列聚合派生表生成的表列可以在同一个可以在同一个T-SQLT-SQL语句语句中多次引用结果集中多次引用结果集通用表表达式样 (CTE) 语法和定义WITHWITH子句和子句和SELECT/INSERT/DELETE/UPDATESELECT/INSERT/DELETE/UPDATE结合结合在一起形成一个单独的在一起形成一个单独的T-SQLT-SQL语句语句在一个单独的在一个单独的T-SQLT-SQL语句中语句中, , 可以有多个可以有多个CTECTE被定义被定义在一个单独的在一个单独的WITHWITH子句里子句里WITH ()AS()SELECT * FROM 通用表表达式样 (CTE) 实例演示WITH mid_cteAS(SELECT (MAX(value) MIN(value) / 2 ) AS midvalFROM Invoices)SELECTCASEWHEN value mid_cte.midval THEN 0ELSE 1END AS half,Invoices.*FROM Invoices, mid_cteORDER BY half;通用表表达式样 (CTE)和递归查询任何一个引用它自己的任何一个引用它自己的CTECTE可以被认为是递归的可以被认为是递归的包含一个固定成员和递归成员包含一个固定成员和递归成员; ;递归成员可以被反递归成员可以被反复调用复调用递归查询会直到递归成员不在返回行时才会结递归成员不在返回行时才会结止止WITH ()AS( - Anchor member is definedUNION ALL - Recursive member is defined - referencing cte_alias)SELECT * FROM 通用表表达式样 (CTE)和递归查询实例演示 - Returns all employees reporting to Employee with EmployeeID=109WITH EmpCTE (EmployeeID, ManagerID, Title)AS(SELECT EmployeeID, ManagerID, Title FROM HumanResources.Employee WHERE EmployeeID = 109 UNION ALL SELECT E.EmployeeID, E.ManagerID, E.Title FROM HumanResources.Employee AS E JOIN EmpCTE AS MON E.ManagerID = M.EmployeeID)SELECT * FROM EmpCTEDDL 触发器允许为所有发生的允许为所有发生的T-SQLT-SQL的数据定义语言的数据定义语言(DDL)(DDL)事事件定义触发器件定义触发器DDLDDL触发器可以被定义在触发器可以被定义在: :单个单个DDLDDL语句语句: :CREATE_TABLE, ALTER_PROCEDURE, DROP_LOGIN, etcCREATE_TABLE, ALTER_PROCEDURE, DROP_LOGIN, etc一组语句一组语句: :DDL_DATABASE_LEVEL_EVENTS, DDL_DATABASE_LEVEL_EVENTS, DDL_DATABASE_SECURITY_EVENTS, etcDDL_DATABASE_SECURITY_EVENTS, etcDDLDDL触发器可被规划在数据库和服务器的范围内触发器可被规划在数据库和服务器的范围内EventDataEventData() () 函数函数在在DDLDDL触发器内部,可以通过访问触发器内部,可以通过访问eventdataeventdata() ()函数获得函数获得与激发该触发器的事件有关的数据。该与激发该触发器的事件有关的数据。该eventdataeventdata() ()函数函数返回有关事件的返回有关事件的xmlxml数据。数据。 DDL 触发器实例演示CREATE TRIGGER trg_disallow_create_table ON DATABASE FOR CREATE_TABLE ASPRINT CREATE TABLE Issued.; SELECT EVENTDATA().value(/EVENT_INSTANCE/TSQLCommand/CommandText)1,nvarchar(max); RAISERROR (New tables cannot be created in this database., 16, 1);ROLLBACK;新排序函数返回和提供任何一个结果行在分区里的排序值返回和提供任何一个结果行在分区里的排序值ROW_NUMBERROW_NUMBERRANKRANKDENSE_RANKDENSE_RANKNTILENTILE用途用途给结果行制定连续的整数排序值给结果行制定连续的整数排序值数据分析和采集数据分析和采集: Paging, Scoring, Histograms: Paging, Scoring, Histograms新排序函数ROW_NUMBERROW_NUMBER对于在一个结果集的一个分区里的一个结果行对于在一个结果集的一个分区里的一个结果行, ,返回一个连续的整返回一个连续的整数排序值数排序值RANKRANK对于在一个结果集的一个分区里的结果行对于在一个结果集的一个分区里的结果行, ,返回行的等级返回行的等级每一个结果行的等级取决于当前行与先前结果行之间就排序列值的每一个结果行的等级取决于当前行与先前结果行之间就排序列值的比较结果比较结果; ;含相同排序列值的结果行会计算在当前行的等级值里含相同排序列值的结果行会计算在当前行的等级值里DENSE_RANKDENSE_RANK对于在一个结果集的一个分区里的结果行对于在一个结果集的一个分区里的结果行, ,返回不间断的行的等级返回不间断的行的等级每一个结果行的等级取决于当前行与先前结果行之间就排序列值的每一个结果行的等级取决于当前行与先前结果行之间就排序列值的比较结果比较结果; ;含相同排序列值的结果行不会计算在当前行的等级值里含相同排序列值的结果行不会计算在当前行的等级值里NTILENTILE将在一个排序分区里的结果行分布成特定的小组将在一个排序分区里的结果行分布成特定的小组对于每一个结果行对于每一个结果行,NTILE,NTILE会返回这个结果行所属的小组的号码会返回这个结果行所属的小组的号码新排序函数实例演示SELECTROW_NUMBER() OVER(ORDER BY City) AS Row_Num,RANK() OVER(ORDER BY City) AS Rank, RANK() OVER(PARTITION BY City ORDER BY LastName) AS Part_Rank,DENSE_RANK() OVER(ORDER BY City) AS Dense_Rank, NTILE(4) OVER(ORDER BY City, ) AS NTile_4,LastName, FirstName, CityFROM EmployeesORDER BY City, LastName新排序函数实例演示: 结果1 1 1 1 11 1 1 1 1LeverlingLeverlingJanetJanetKirklandKirkland2 2 2 2 1 1 2 1 2 1BuchananBuchananStevenStevenLondonLondon3 3 2 2 2 2 2 1 2 1DodsworthDodsworthAnneAnneLondonLondon4 2 4 2 3 3 2 2 2 2KingKingRobertRobertLondonLondon5 2 5 2 4 4 2 2 2 2SuyamaSuyamaMichaelMichaelLondonLondon6 6 1 6 6 1 3 3 3 3PeacockPeacockMargaretMargaretRedmondRedmond7 7 1 4 37 7 1 4 3CallahanCallahanLauraLauraSeattle Seattle 8 7 2 4 48 7 2 4 4DavolioDavolioNancyNancySeattleSeattle9 9 1 5 49 9 1 5 4FullerFullerAndrewAndrewTacomaTacomaRankRankPart_RankPart_RankDense_RankDense_RankNTile_4NTile_4LastNameLastNameFirstNameFirstNameCityCityRow_NumberRow_Number新的关系运算符PIVOT and UNPIVOT可将一个可将一个table-valuedtable-valued的表达式转换成一个表的表达式转换成一个表可被定义在可被定义在FROMFROM子句里子句里PIVOTPIVOT将行旋转为将行旋转为列列可能同时执行聚合可能同时执行聚合用途用途: :处理处理 open-schema open-schema 景象景象生成跨越表格的报表以便更好的统计数据生成跨越表格的报表以便更好的统计数据UNPIVOTUNPIVOT与与PIVOTPIVOT相反的操作相反的操作; ; 将列旋转为行将列旋转为行更多的用来转换已经经过更多的用来转换已经经过PIVOTPIVOT处理的数据处理的数据PIVOT实例演示MakeYearSalesHondaHonda1990199020002000HondaHonda1990199010001000AcuraAcura19901990500500HondaHonda199130003000AcuraAcura1991300300AcuraAcura1991600600AcuraAcura19921992800800Make19901991HondaHonda3000300030003000AcuraAcura500500900900SELECT * FROM CarSalesPIVOT(SUM(Sales)FOR Year IN (1990, 1991) AS PVTUNPIVOT实例演示MakeYearSalesAcuraAcura19901990500500AcuraAcura1991900900HondaHonda1990199030003000HondaHonda199130003000Make19901991HondaHonda3000300030003000AcuraAcura500500900900SELECT Make, Year, Sales FROM CarSalesPivotUNPIVOT(Sales FOR Year IN (1990, 1991) AS UNPVT新的关系运算符APPLYAPPLYAPPLY关系运算符允许您对外部表的每个行调用指关系运算符允许您对外部表的每个行调用指定的表值函数定的表值函数(TVF)(TVF)一次一次可被定义在可被定义在FROMFROM子句里子句里APPLYAPPLY的两种形式的两种形式: :CROSS APPLYCROSS APPLY对于从对于从表值函数表值函数中生成结果集的中生成结果集的外部表外部表, CROSS APPLY, CROSS APPLY从中返从中返回相应的行回相应的行和内部链接和内部链接(INNER JOIN)(INNER JOIN)效果相同效果相同OUTER APPLYOUTER APPLYOUTER APPLYOUTER APPLY从从外部外部表中返回所有的行表中返回所有的行用用NULLNULL替代空结果集里的替代空结果集里的表值函数表值函数列列和外部链接和外部链接(left outer join)(left outer join)效果相同效果相同APPLY实例和演示- Returns nothing or a table with a single rowCREATE FUNCTION fn_greater (v AS FLOAT, n AS FLOAT)RETURNS TABLEASRETURN SELECT v AS Val WHERE v n;GO- Returns rows in CarSales where Sales 1000SELECT * FROM CarSalesCROSS APPLY fn_greater (Sales, 1000);- Returns all rows in CarSalesSELECT * FROM CarSalesOUTER APPLY fn_greater(Sales, 1000);新的结果集运算符 EXCEPT and INTERSECT从另外两个结果集产生出一个新的结果集从另外两个结果集产生出一个新的结果集EXCEPT EXCEPT 返回所有属于第一个结果集但不属于第二返回所有属于第一个结果集但不属于第二个结果集的行个结果集的行INTERSECTINTERSECT返回所有共同属于两个结果集的行返回所有共同属于两个结果集的行- Get authors with booksSELECT au_id FROM authorsINTERSECTSELECT au_id FROM titleauthor- Get authors without booksSELECT au_id FROM authorsEXCEPTSELECT au_id FROM titleauthorDML 与 OUTPUT新的新的OUTPUTOUTPUT子句可以从子句可以从INSERT/UPDATE/DELETE INSERT/UPDATE/DELETE T-SQLT-SQL语句中返回数据语句中返回数据从从OUTPUTOUTPUT返回的数据会直接传到调用的应用程序返回的数据会直接传到调用的应用程序中中从从OUTPUT INTOOUTPUT INTO返回的数据会直接被输入到表或返回的数据会直接被输入到表或表变量中表变量中可以用来对可以用来对” ”被输入被输入” ”和和” ”被删除被删除” ”的数据进行被更改的数据进行被更改前后的数据值前后的数据值用途用途: : 队列操作队列操作, , 掌握中间结果集掌握中间结果集OUTPUT OUTPUT INTO DELETE Sales.ShoppingCartItem OUTPUT DELETED.*; TOP增强功能指定只有第一组结果行将会从查询结果中返回指定只有第一组结果行将会从查询结果中返回在在 SQL Server2000SQL Server2000SELECT TOP SELECT TOP 只可用在只可用在SELECTSELECT语句中语句中在在SQL Server2005SQL Server2005SELECT TOP (SELECT TOP () PERCENT WITH TIES) PERCENT WITH TIES 可以是变量可以是变量, , 子查询子查询(SUB-QUERY)(SUB-QUERY)或常量或常量还可用在还可用在INSERT, UPDATE, DELETEINSERT, UPDATE, DELETE语句中语句中TOP WITH TIESTOP WITH TIES 只能用在只能用在SELECTSELECT语句中语句中TOP增强功能实例演示- Use TOP with variable to return the n most recent invoicesDECLARE n AS INT;SET n = 2;SELECT TOP (n) *FROM InvoicesORDER BY InvoiceDate DESC;- Use TOP with subquery to calculate the average number of - monthly invoices and return that many most recent invoicesSELECT TOP (SELECT COUNT (*) / DATEDIFF (month, MIN(InvoiceDate), MAX(InvoiceDate) FROM Invoices) *FROM InvoicesORDER BY InvoiceDate DESC;T-SQL和CLR集成SQL Server2000现有编程模型TransacT-SQL(T-SQL)扩展存储过程(XP)SQL Server2005新增加的CLR集成编程模型用任何CLR托管代码编写存储过程、触发器和函数可创建自定义的数据类型和聚合函数CLR基本概念CLRCLR是是WINDOWS .NETWINDOWS .NET架构架构C#,VB.NETC#,VB.NET等编程语言等编程语言的运行环境的运行环境程序可被编译成程序可被编译成托管代码托管代码并支持以下功能并支持以下功能: :自动内存管理自动内存管理通用数据类型系统通用数据类型系统代码校验和读取安全代码校验和读取安全丰富的代码库丰富的代码库独立的应用域独立的应用域支持反汇编支持反汇编什么是SQLCLR?用用.NET.NET编程语言编写以下类型数据库程序并在编程语言编写以下类型数据库程序并在SQL SERVERSQL SERVER中运行中运行用户自定义函数用户自定义函数(UDF)(UDF)存储过程存储过程(SP)(SP)计算和逻辑密集的代码用户自定义数据类型用户自定义数据类型(UDT)(UDT)触发器触发器SSIS SSIS 软件包软件包报表系统中的表达式和数据供应源报表系统中的表达式和数据供应源SQLCLR概述注册和执行数据库中注册和执行数据库中CLRCLR托管代码托管代码编写编写.NET.NET程序程序, ,编译成编译成托管代码托管代码, ,并生成程序集并生成程序集程序集上载到程序集上载到SQL Server2005SQL Server2005用用Create AssemblyCreate Assembly数据定义语言数据定义语言(DDL)(DDL)将其存储到系统目录将其存储到系统目录( (部署部署) )创建创建T-SQLT-SQL对象对象, ,并将其绑定到已经上载的程序集的入口点,并将其绑定到已经上载的程序集的入口点,用用Create Procedure/Function/Trigger/Type/AggregateCreate Procedure/Function/Trigger/Type/Aggregate应用程序可以象应用程序可以象T-SQLT-SQL例程一样的调用例程一样的调用构建和部署构建和部署VS.NET 2005VS.NET 2005提供的提供的 SQL ServerSQL Server项目项目 的代码模板的代码模板部署过程自动创建程序集中定义的例程、类型和聚合部署过程自动创建程序集中定义的例程、类型和聚合调试调试不受客户端到服务器连接类型的影响不受客户端到服务器连接类型的影响跨语言无缝调试,例如从跨语言无缝调试,例如从T-SQLT-SQL过程进入过程进入CLRCLR过程过程SQLCLR概述VS 2005 VS 2005 ProjectProjectAssembly: “TaxLib.dll”VB, C#, VB, C#, SQL ServerSQL ServerSQL Data Definition: SQL Data Definition: create assembly create assembly create function create function create procedure create procedure create trigger create trigger create type create type SQL Queries: SQL Queries: select select sum(tax(sal,statesum(tax(sal,state) ) ) ) from from EmpEmp where county where county = King= KingRuntime hosted inside SQLBuilddeploySQLCLR用户自定义函数(UDFs)支持常用和表值函数支持常用和表值函数遵循和遵循和T-SQLT-SQL相同的规则相同的规则, ,没有付作用没有付作用比比T-SQLT-SQL更加灵活更加灵活运用运用.NET.NET的基本数据结构的基本数据结构运用用户自定义的运用用户自定义的.NET.NET的数据结构的数据结构可以运行虚拟可以运行虚拟T-SQLT-SQL运行效率会同于或好于运行效率会同于或好于T-SQLT-SQLSQLCLR存储过程可以完成任何可以完成任何T-SQLT-SQL存储过程能做到的存储过程能做到的多结果集多结果集输出参数输出参数信息信息返回代码返回代码可以共享其它可以共享其它SQLCLRSQLCLR模块的功能模块的功能: :C# or VB.net C# or VB.net 代码代码最适用于最适用于: :外部数据源外部数据源多个从外部数据源过来的输出参数多个从外部数据源过来的输出参数复杂的数学和逻辑计算复杂的数学和逻辑计算SQLCLR用户定义数据类型(UDT)通过通过.Net CLR.Net CLR在在VB.NetVB.Net或或C#C#中定义中定义将应用程序的逻辑和数据嵌入的数据库中将应用程序的逻辑和数据嵌入的数据库中好处好处: : 灵活的编程能力灵活的编程能力保持长期的一贯性保持长期的一贯性建立CLR UDT的总体步鄹通过通过.Net language (VB or C#).Net language (VB or C#)建立建立 ClassClass通过通过CREATE ASSEMBLYCREATE ASSEMBLY建立数据库模块建立数据库模块通过通过CREATE TYPE CREATE TYPE 数据定义语言数据定义语言(DDL)(DDL)定义数据类型定义数据类型CREATE Assembly myAssembly FROM serversharemyAssembly.dllGoCREATE TYPE myType EXTERNAL NAME myAssembly.myAssembly.myTypego相关资源http:/www.microsoft.com/http:/www.microsoft.com/sqlsql Transact-SQL Enhancements in SQL Server 2005Transact-SQL Enhancements in SQL Server 2005http:/msdn2.microsoft.com/en-us/library/ms170355.aspxhttp:/msdn2.microsoft.com/en-us/library/ms170355.aspx SQL Server 2005 Books OnlineSQL Server 2005 Books Onlinehttp:/msdn2.microsoft.com/en-us/library/ms130214.aspxhttp:/msdn2.microsoft.com/en-us/library/ms130214.aspx SQL Server 2005 Developer Documentation SQL Server 2005 Developer Documentation http:/msdn.microsoft.com/sql/sqlref/docs/default.aspxhttp:/msdn.microsoft.com/sql/sqlref/docs/default.aspx SQL Server Developer CenterSQL Server Developer Centerhttp:/http:/msdn.microsoft.com/sqlmsdn.microsoft.com/sql/ / Programmability ResourcesProgrammability Resourceshttp:/msdn.microsoft.com/sql/learn/prog/http:/msdn.microsoft.com/sql/learn/prog/问题解答?
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号