CREATE FUNCTION [dbo].[FN_TopGetOrgByUserName]
(
@UserName NVARCHAR(128)
)
RETURNS @showOrg TABLE(id NVARCHAR(36))
AS
BEGIN
DECLARE @baseOrg TABLE(id NVARCHAR(36),
fullpath NVARCHAR(200),
shortName NVARCHAR(200),
parentid NVARCHAR(36),
[level] INT,index_baseOrg INT) INSERT INTO @baseOrg
SELECT id,fullpath,shortName,parentid,[level],ROW_NUMBER()OVER(ORDER BY id) FROM SysOrganization
WHERE id IN (
SELECT OrgID FROM SysPosition ,SysUserPosition,SysUser
WHERE SysPosition.ID=SysPosition AND SysUser.ID=SysUser_ID
AND UserName=@UserName
AND basepositionid=''
)
AND IsEnable=1 AND (IsDel=0 OR IsDel IS NULL) DECLARE @i INT
DECLARE @j INT
SET @i=1
SELECT @j=COUNT(*)FROM @baseOrg WHERE [level]=1
IF @j=1
BEGIN
INSERT INTO @showOrg
SELECT id FROM SysOrganization
WHERE IsEnable=1 AND( IsDel=0 OR isdel IS NULL ) END
ELSE
BEGIN
SELECT @j=COUNT(*)FROM @baseOrg
WHILE @i<=@j
BEGIN
DECLARE @currentID NVARCHAR(36)
SELECT @currentID=ID FROM @baseOrg WHERE index_baseOrg=@i
DECLARE @levelChild INT
DECLARE @t_level TABLE(id VARCHAR(MAX) , [level] INT)
SET @levelChild = 1
INSERT @t_level SELECT @currentID, @levelChild
WHILE @@ROWCOUNT > 0
BEGIN
SET @levelChild = @levelChild + 1
INSERT INTO @t_level SELECT a.ID , @levelChild
FROM SysOrganization a , @t_Level b
WHERE a.ParentID = b.id AND b.[level] = @levelChild - 1
END
INSERT INTO @showOrg SELECT id FROM @t_level WHERE id NOT IN (SELECT id FROM @showOrg)
SET @i=@i+1
END
END
RETURN
END GO

Split 表函数将一个字符串按指定分隔符进行分割,返回一个表。  charindex:在一段字符中搜索字符或者字符串

create function split(  
    @string varchar(255),--待分割字符串  
    @separator varchar(255)--分割符  
)returns @array table(item varchar(255))  
as  
begin  
    declare @begin int,@end int,@item varchar(255)  
    set @begin = 1  
    set @end=charindex(@separator,@string,@begin)  
    while(@end<>0)  
    begin  
        set @item = substring(@string,@begin,@end-@begin)  
        insert into @array(item) values(@item)  
        set @begin = @end+1  
        set @end=charindex(@separator,@string,@begin)  
    end  
    set @item = substring(@string,@begin,len(@string)+1-@begin)  
    if (len(@item)>0)  
        insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))  
    return  
end  

标量值函数:返回一个值

--用户自定义函数
CREATE FUNCTION dbo.core_getfilesize ( @size int )
RETURNS varchar(50)
AS
BEGIN
DECLARE @m FLOAT;
DECLARE @s VARCHAR(50);
SET @m = ROUND(CAST(@size AS FLOAT) / 1024, 2)
IF ( @m > 1024 )
BEGIN
SET @m = ROUND(CAST(@size AS FLOAT) / 1048576, 2)
SET @s = CONVERT(VARCHAR(18), @m) + 'M';
END
ELSE
BEGIN
SET @s = CONVERT(VARCHAR(18), @m) + 'K';
END
RETURN @s;
END --调用
SELECT dbo.core_getfilesize(1048576000)

表值函数:返回一张表

CREATE FUNCTION getuses
(
@id int
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM biaoming(nolock) r WHERE r.id=@id
)

存储过程:

1.不带返回值的存储过程

2.带返回值的存储过程

SqlServer 中查询子节对应的上级自定义函数的更多相关文章

  1. SQLServer中查询的数字列前面补0返回指定长度的字符串

    SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...

  2. DB 查询分析器 方便地创建DB2自定义函数

    DB 查询分析器 方便地创建DB2自定义函数                           马根峰            (广东联合电子服务股份有限公司, 广州 510300) 摘要       ...

  3. 【转载】Sqlserver中查询窗口显示行号

    在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

  4. PHP中call user func()和call_user_func_array()调用自定义函数小结

    call_user_func() 和 call_user_func_array(),通过传入字符串函数,可以调用自定义函数,并且支持引用,都允许用户调用自定义函数并传入一定的参数: 1.mixed c ...

  5. sqlserver中查询存储过程中的字符串

    select name from sysobjects o, syscomments s where o.id = s.id and text like '%querytext%' and o.xty ...

  6. Django中利用filter与simple_tag为前端自定义函数的实现方法

    转自:http://www.jb51.net/article/116303.htm 前言 Django的模板引擎提供了一般性的功能函数,通过前端可以实现多数的代码逻辑功能,这里称之为一般性,是因为它仅 ...

  7. 第二百八十五节,MySQL数据库-MySQL函数

    MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函 ...

  8. 在 SQL Server 数据库的 WHERE 语句中使用子查询

    这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...

  9. 【SqlServer系列】子查询

    1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...

随机推荐

  1. 【题解】Luogu P2047 社交网络总结 (Floyd算法,最短路计数)

    题目描述 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我 们将这个关系网络对 ...

  2. 自学huawei之路-AC6005-8AP添加授权码

    返回自学Huawei之路 自学huawei之路-AC6005-8AP添加授权码

  3. SoapUI使用笔记备忘

    1.安装好SoapUI后,新建一个REST项目 注意新建REST项目时,需要输入测试站点的地址,即IP+端口 之后点击OK就建立好了项目,但是新项目会默认自带一个根路径访问请求,可以删除(一般没用) ...

  4. 【洛谷P1341】无序字母对

    题目大意:给定 n 个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有 n+1 个字母的字符串使得每个字母对都在这个字符串中出现. 题解:每个无需字母对可以看成无 ...

  5. 【CF706D】Vasiliy's Multiset Trie+贪心

    题目大意:需要维护一种数据结构,支持以下三种操作:插入一个数,删除一个数,查询该数据结构中的数异或给定数的最大值. 题解:如果没有删除操作就是一个标准的 Trie 上贪心求最大异或和问题.现在需要支持 ...

  6. 修改Visual Studio项目中程序集信息默认公司名称的两种方法

    这个公司名就是安装系统时注册的单位名称.可以通过修改注册表修改 Windows 系统的注册信息,方法如下:1.在开始"运行"中输入regedit,打开注册表编辑器.2.依次展开:H ...

  7. Spark记录-Scala集合

    Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类 ...

  8. SQL记录-PLSQL异常

    PL/SQL异常   程序执行过程中出现错误情况被称为在PL/SQL异常. PL/SQL支持程序员在程序中使用异常块捕获这样的条件并采取适当的动作应对错误情况.有两种类型的异常: 系统定义的异常 用户 ...

  9. scala 基础知识总结

    在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...

  10. Kafka 温故(四):Kafka的安装

    Step 1: 下载Kafka > tar -xzf kafka_2.9.2-0.8.1.1.tgz> cd kafka_2.9.2-0.8.1.1 Step 2: 启动服务Kafka用到 ...