SqlServer 中查询子节对应的上级自定义函数
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 中查询子节对应的上级自定义函数的更多相关文章
- SQLServer中查询的数字列前面补0返回指定长度的字符串
SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...
- DB 查询分析器 方便地创建DB2自定义函数
DB 查询分析器 方便地创建DB2自定义函数 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 ...
- 【转载】Sqlserver中查询窗口显示行号
在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...
- PHP中call user func()和call_user_func_array()调用自定义函数小结
call_user_func() 和 call_user_func_array(),通过传入字符串函数,可以调用自定义函数,并且支持引用,都允许用户调用自定义函数并传入一定的参数: 1.mixed c ...
- sqlserver中查询存储过程中的字符串
select name from sysobjects o, syscomments s where o.id = s.id and text like '%querytext%' and o.xty ...
- Django中利用filter与simple_tag为前端自定义函数的实现方法
转自:http://www.jb51.net/article/116303.htm 前言 Django的模板引擎提供了一般性的功能函数,通过前端可以实现多数的代码逻辑功能,这里称之为一般性,是因为它仅 ...
- 第二百八十五节,MySQL数据库-MySQL函数
MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函 ...
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...
- 【SqlServer系列】子查询
1 概述 1.1 已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...
随机推荐
- wordpress点击中文tag标签出现404解决方案
TypeCho转WordPress之后,发现点击中文tag出现404页面,也就是点击无效了.试了几种修改链接样式,都没效果.也尝试了各种网上找的3中方法: 第一种方法:打开 WP-include/cl ...
- windows10中远程登录ubuntu16.04的桌面
1. 安装xrdp sudo apt-get install xrdp 2. 安装vnc4server sudo apt-get install vnc4server tightvncserver ...
- POJ 2516 Minimum Cost (网络流,最小费用流)
POJ 2516 Minimum Cost (网络流,最小费用流) Description Dearboy, a goods victualer, now comes to a big problem ...
- 【HDU5687】Trie
题目大意:需要维护一个支持以下操作的数据结构:(1)支持插入一个字符串(2)支持删除所有前缀等于给定字符串的单词(3)查询该数据结构中是否存在一个以给定字符串为前缀的字符串 题解:由题目可知,需要维护 ...
- js验证4位数字
var reg = /^\d{4}$/; var str = "0001"; reg.test(str);
- mysql、mybatis遇到问题集合
1.错误描述 使用JDBC连接MySql时出现:The server time zone value '�й���ʱ��' is unrecognized or represents more th ...
- Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
编辑文件 "/etc/ntp.conf",根据情况修改文件内容为: 互联网上的服务器: driftfile /var/lib/ntp/drift pidfile /var/run/ ...
- centos7+mysql5.7.11实现主从复制
1 首先检测当前的系统是否已经安装了MySQL yum list installed | grep mysql 如果有的话,删除 2 下载rpm库资源,在网页 https://dev.mysql. ...
- Python 内置变量
Python 隐藏变量 __doc__ # 表示本文件的注释__file__ # 表示本文件的路径 __package__ # 导入的py文件所在的文件夹路径__cached__ # 导入文件的缓存_ ...
- python---django中orm的使用(2)
1.基于对象的正向查询和反向查询 在python---django中orm的使用(1)中也提到了正向和反向查找 表:一对多 书籍和出版社 class Book(models.Model): titl ...