zoukankan      html  css  js  c++  java
  • SQL SERVER 高级编程

    每个人都很忙,但是花10分钟复习下,总结下基础东西还是很有益处的。

    背景:

      总结一句,使用简便,还能递归,是的SQL更简洁,相对比一大堆的关联语句,而且关联一大堆还不一定实现特定功能。而且共用部分可以提取出来,提高复用性,这是有代码洁癖的人没法接受的,所以总会重构代码,。。扯偏了

    创建:

    (图片来自百度)

    自定义函数分为以下几种:

    1.标量值函数:

            案例脚本:

        

    CREATE FUNCTION Func_CreateGroup(@Id int)
    RETURNS  varchar(4)
    AS
    BEGIN
    	RETURN 
    	CASE 
    		WHEN @Id<=5 THEN '小'
    		WHEN 10000<=@Id AND @Id>5 THEN '中'
    		END
    END
    

      使用:

    SELECT dbo.Func_CreateGroup(Id),MemberName FROM dbo.MemberInfo
    

      这里有一个注意点:标量函数前面的dbo必须加上,否则提示错误:'Func_CreateGroup' 不是可以识别的 内置函数名称。

    查询结果:

    2.内嵌表值型函数:

    语法:

    参考脚本:

    CREATE FUNCTION Func_Table(@Id int)
    RETURNS table
    AS
    	RETURN SELECT * FROM dbo.MemberInfo WHERE Id>@Id
    GO
    

      使用参考:

    SELECT * FROM Func_Table(500)
    

      这里要注意一个细节,在标量值函数中,有一个前缀dbo.必须加上,而内嵌表值型 函数可以不用加上(加上也没错),这是一个区别,另外上面忘记说了,注意第二行的单词拼写,是returns 不要写成return了,然后下面的脚本就像写存储过程一样,直接在as下面写具体的业务实现。

    3.多语句表值型函数

    多语句表值型函数是标量函数和单语句函数的结合体,该函数返回的是一个表,可以进行多次查询。

    参考语法:

    参考脚本:

    CREATE FUNCTION Func_MuilSqlTable(@Id int)
    RETURNS @table TABLE
    (
    	Id int ,
    	MemberName varchar(20),
    	UpdateTime datetime
    ) AS
    BEGIN
    	INSERT @table
    	SELECT Id,MemberName,UpdateTime FROM dbo.MemberInfo
    	WHERE id=@Id
    	RETURN 
    END
    

    使用参考:

    SELECT * FROM dbo.Func_MuilSqlTable(1)
    

    案例执行结果:

    这里有个细节要注意,写法和上面的内嵌表值型函数相似,但是在returns处,多了一个表变量 @table table以及要返回的字段(使用小括号括起来),然后是AS的内容,但是在最后要注意一下,有一个  return(蓝色部分),否则报错 函数中最后一条语句必须是返回语句,其次就是,dbo.的前缀。

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/Tmc-Blog/p/5315200.html
Copyright © 2011-2022 走看看