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 ...
随机推荐
- 怎么把焦点放在RichEdit的最后一行
急急急!!!!如何把焦点放在RichEdit的最后一行!! 请高手指点,在线等!!!!当添加到出现滚动条时焦点就不会往下了,怎么把焦点移到最后一行 RichEdit-> Lines-> A ...
- Linux命令行上传本地文件到服务器 、 下载服务器文件到本地
sh使用命令: scp 将本地文件上传至服务器 第一个是本地文件的路径/文件名, 例如 ./index.tar.gz . index.html . bg.png 等 第二个是要上传到的服务器的位置 ...
- 安装配置ubuntu的web项目(新)
1.下载jre wget -c javadl.oracle.com/webapps/download/AutoDL?BundleId=211989 -O jre-8u101-linux-i586.ta ...
- 查看是否存在tomcat进程和关闭方法
#看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; kill - pid #pid 为相应的进程号 例如 ps -ef |grep tomcat 输出如 ...
- eclipse运行tomcat中发生异常重启后tomcat端口被占用
在任务管理器关闭javaw进程即可,一般此时会有两个以上javaw进程,关闭其中占用内存较少的那个 可用netstat -ano命令查看端口占用情况
- Codeforces Round #485 Div. 1 vp记
A:对每种商品多源bfs一下每个点到该商品的最近距离,对每个点sort一下取前s个即可. #include<iostream> #include<cstdio> #includ ...
- Django_博客项目 注册用户引发 ValueError: The given username must be set
博客项目中 注册功能在ajax 提交数据时 报错 ValueError: The given username must be set 锁定到错误点为 判定为是无法获取到 username 字段 那先 ...
- emWin 界面切换注意事项
@2018-07-10 emWin 在做界面切换时,须将切换前的界面所有信息 “删除”,否则将造成切换后的界面死机 此 “删除” 对象包括: > 界面上绘制的曲线(随时间一直变化).绘制的2D ...
- 关于找List的中间Node
初始值 slow = fast = head; 如果使用 fast && fast->next && fast->next->next 作为快慢指针循 ...
- 弹指之间 -- Slow Soul
CHAPTER 16 慢灵魂乐 Slow Soul (8Beat) Slow Soul每小节内几乎都是以8分音符弹奏,又称之为8Beat节奏,80左右的速度最能表现此节奏特色. 示例曲目: 拥抱