【997755.com澳门葡京】SQL中储存进度和函数的分化,存款和储蓄进程与函数的区别

         

一.开立函数、查找函数

 

 

精神上没分歧。

997755.com澳门葡京 1

实为上没分别。只是函数有如:只好回去二个变量的限制。而存款和储蓄进程可以回到多个。

【997755.com澳门葡京】SQL中储存进度和函数的分化,存款和储蓄进程与函数的区别。真相上没差距。只是函数有如:只可以回去一个变量的限制。而存款和储蓄过程能够再次回到多少个。

只是函数有如:只可以回去3个变量的限制。而存款和储蓄进度可以回来多少个。而函数是足以放置在sql中动用的,能够在select中调用,而存款和储蓄进度不行。执行的本色都壹样。
函数限制相比多,比如不可能用一时表,只好用表变量.还有壹对函数都不可用等等.而存款和储蓄进度的界定绝对就相比少

/*创建带参数的函数,返回单个*/
CREATE FUNCTION [dbo].[GETGrade](@userName nvarchar(10),@subject nvarchar(10))
returns nvarchar(10)
as begin

declare @grade nvarchar(10)

if @userName='张三'
   set @grade=(select [source] from TestRows2Columns where username=@userName and [subject]=@subject)

if @userName='李四'
   set @grade=(select [source] from TestRows2Columns where username=@userName and [subject]=@subject)

if @userName='王五'
   set @grade=(select [source] from TestRows2Columns where username=@userName and [subject]=@subject)
return @grade

end

而函数是足以松开在sql中应用的,能够在select中调用,而存款和储蓄进度丰硕。

而函数是足以放置在sql中动用的,能够在select中调用,而存款和储蓄进度丰盛。

壹.    
一般的话,存款和储蓄过程达成的功用要复杂一点,而函数的落到实处的效能针对性相比较强。
二.     对于仓库储存进度来说能够回到参数,而函数只可以重返值只怕表对象。
3.    
存款和储蓄进程一般是当做七个独立的片段来执行,而函数能够看做查询语句的四个局地来调用,由于函数能够回去3个表对象,因而它能够在查询语句中位居FROM关
键字的后边。
4.     当存储进程和函数被实践的时候,SQL Manager会到procedure
cache中去取相应的询问语句,要是在procedure
cache里未有相应的询问语句,SQL Manager就会对存款和储蓄进度和函数进行编写翻译。
Procedure cache中保存的是实施安插 (execution plan)
,当编写翻译好之后就推行procedure cache中的execution plan,之后SQL
SE昂科拉VE奥迪Q伍会依据各类execution
plan的实在情况来思虑是或不是要在cache中保存那么些plan,评判的标准3个是以此execution
plan或者被选用的成效;其次是生成这么些plan的代价,也正是编写翻译的耗费时间。保存在cache中的plan在下次执行时就不用再编写翻译了。

进行函数

推行的实质都同样。 
     函数限制相比较多,比如不可能用暂时表,只好用表变量.

实践的面目都平等。 
     函数限制比较多,比如无法用方今表,只好用表变量.

select dbo.GETGrade('张三','语文')

  还有局地函数都不可用等等.而存款和储蓄进程的限定相对就比较少 

  还有部分函数都不可用等等.而存储进程的限量绝对就比较少 

997755.com澳门葡京 2

    一.   
一般的话,存款和储蓄进度实现的效应要复杂一点,而函数的达成的效益针对性相比较强。 
      二.   
对于仓库储存进程来说能够再次来到参数,而函数只好重返值只怕表对象。 
      三.    存款和储蓄进度相似是用作一个单身的一部分来实施(EXEC执行),

    一.   
一般的话,存款和储蓄进程完成的效果要复杂一点,而函数的兑现的作用针对性相比强。 
      二.   
对于仓库储存进程来说能够回来参数,而函数只好重回值大概表对象。 
      3.    存款和储蓄进程①般是当做多个单独的有的来执行(EXEC执行),

回到表函数

    而函数能够用作查询语句的一个有的来调用(SELECT调用),由于函数能够重回叁个表对象,

    而函数能够看成查询语句的叁个有的来调用(SELECT调用),由于函数能够回来2个表对象,

/*创建函数,返回表*/
CREATE  FUNCTION  GETGrade2(@userName nvarchar(10),@subject nvarchar(10))
RETURNS @TempTable TABLE(userName nvarchar(10),subject nvarchar(10),[Source] nvarchar(50))
AS  
BEGIN
INSERT INTO @TempTable(userName,[subject],[Source])
SELECT [UserName],[Subject],[Source]  from [TestRows2Columns] where username=@userName and [subject]=@subject
RETURN 
END

    由此它能够在查询语句中位居FROM关键字的前边。 
      四.    当存款和储蓄进度和函数被实施的时候,SQL Manager会到procedure
cache中去取相应的询问语句,若是在procedure
cache里未有相应的查询语句,SQL Manager就会对存储进程和函数实行编写翻译。 
      Procedure cache中保留的是推行布署 (execution plan)
,当编写翻译好之后就执行procedure cache中的execution plan,之后SQL
SE奥迪Q7VEBMWX3会依据每一种execution
plan的实际上景况来思量是否要在cache中保存那个plan,评判的正儿8经贰个是以此execution
plan只怕被选择的效用;其次是生成那个plan的代价,也正是编写翻译的耗费时间。保存在cache中的plan在下次实践时就无须再编写翻译了。

    由此它能够在查询语句中位居FROM关键字的后面。 
      四.    当存款和储蓄进程和函数被实践的时候,SQL Manager会到procedure
cache中去取相应的查询语句,假使在procedure
cache里未有对应的询问语句,SQL Manager就会对存款和储蓄进度和函数进行编写翻译。 
      Procedure cache中保存的是履行计划 (execution plan)
,当编写翻译好之后就实施procedure cache中的execution plan,之后SQL
SERVE凯雷德会根据各类execution
plan的骨子里境况来思索是或不是要在cache中保留那么些plan,评判的正式多少个是那个execution
plan恐怕被应用的功效;其次是生成这么些plan的代价,约等于编写翻译的耗费时间。保存在cache中的plan在下次施行时就无须再编写翻译了。

进行函数

SELECT * from dbo.GETGrade2('张三','语文')

997755.com澳门葡京 3

创造储存进度、查找储存进程

CREATE PROC P_View(@userName nvarchar(10),@subject nvarchar(10))
AS
BEGIN
SELECT * FROM TestRows2Columns where username=@userName and [subject]=@subject
END

施行储存进度

EXEC P_View '李四','数学'

997755.com澳门葡京 4

精神上没分裂。只是函数有如:只可以回去3个变量的范围。而存款和储蓄进度能够回来三个。而函数是能够停放在sql中利用的,能够在select中调用,而存款和储蓄进度13分。执行的面目都平等。 
997755.com澳门葡京,    
函数限制相比多,比如无法用一时半刻表,只可以用表变量.还有局地函数都不可用等等.而存款和储蓄进度的限定相对就相比少 
      一.   
壹般的话,存款和储蓄进度达成的成效要复杂一点,而函数的落到实处的功力针对性相比强。 
      二.   
对于仓库储存进度来说能够回去参数,而函数只可以再次来到值也许表对象。 
      三.   
存款和储蓄进度相似是用作三个单独的部分来推行(EXEC执行),而函数能够当作查询语句的三个局地来调用(SELECT调用),由于函数能够回到1个表对象,由此它能够在查询语句中位居FROM关键字的前边。 
      肆.    当存款和储蓄进度和函数被实践的时候,SQL Manager会到procedure
cache中去取相应的查询语句,如若在procedure
cache里未有相应的查询语句,SQL Manager就会对存款和储蓄进程和函数举行编译。 
      Procedure cache中保留的是履行陈设 (execution plan)
,当编写翻译好之后就执行procedure cache中的execution plan,之后SQL
SE牧马人VE普拉多会依照各个execution
plan的实际上意况来设想是否要在cache中保存这些plan,裁判的标准一个是以此execution
plan恐怕被使用的频率;其次是生成那个plan的代价,相当于编写翻译的耗费时间。保存在cache中的plan在下次举行时就无须再编写翻译了。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website