MS SQL Server2005用户自定义标量函数一用
2008-06-03 14:34
274 查看
在应用数据库开发中经常遇到这样一个问题:一个实体的属性包含另一个实体的属性,比如OA中的用户实体,包含职位实体的职位Id,并且一个用户有可能身兼多职。在数据库存储中一般用“PrivId1,PrivId2,PriveId3,...,...,”的方式来存储。但我们的程序中获取数据的时候一般想获得职位名称。而这种方式在获取数据的时候,按照一般的思维就是,想获取用户的职位Id,在通过职位的Id再去获取职位名称,应用起来特别别扭。今天在应用到函数max()是突然想到,是不是可以创建一个用户自定义函数来解决数据提取的别扭问题。函数代码如下:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ------------------------------------------------------------------------------------------------------------------------ -- 功能:返回部门名称字符串,以,分隔。 ------------------------------------------------------------------------------------------------------------------------ ALTER FUNCTION [dbo].[GetDeptNames] (@DeptIdStr nvarchar(2000)) RETURNS nvarchar(4000) AS BEGIN IF @DeptIdStr IS NULL RETURN '' DECLARE @DeptNameStr nvarchar(4000) DECLARE @DeptName nvarchar(50) DECLARE @i int SET @i = 0 --全部部门 IF UPPER(@DeptIdStr) = 'All_DEPT' RETURN '全体部门' ELSE DECLARE Dept_Cursor CURSOR FOR SELECT [DepartmentName] FROM [dbo].[Department] WHERE CHARINDEX(',' + CAST(DepartmentId AS nvarchar(20)) + ',',',' + @DeptIdStr + ',') > 0 ORDER BY [Department].[DepartmentId] ASC OPEN Dept_Cursor FETCH NEXT FROM Dept_Cursor INTO @DeptName WHILE @@FETCH_STATUS = 0 BEGIN IF @i = 0 SET @DeptNameStr = @DeptName ELSE SET @DeptNameStr = @DeptNameStr + ',' + @DeptName SET @i = @i + 1 FETCH NEXT FROM Dept_Cursor INTO @DeptName END CLOSE Dept_Cursor DEALLOCATE Dept_Cursor RETURN @DeptNameStr END --测试 select * ,dbo.GetDeptNames(DepartmentId) from Users
测试结果跟想要的结果一样。特记录于此,欢迎各位指教
相关文章推荐
- MS SQL Server 2005 用户权限设置方案
- win8安装MS Sql Server 2005 服务无法启动解决方案
- ms sql server 2005 select 用法大全
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法
- 查看MS SQL Server 2005數據庫中各表大小的SQL Script
- 转帖:MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
- ms sql server 2005 维护计划无法删除问题(sql server 2005 maintnance plan can not delete)
- ms sql server 2005 sp1发布
- MS SQL Server 2005网络服务器配置方法
- 从MS SQL Server 2000升级到MS SQL Server 2005方法[转]
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法
- 在MS SQLSERVER中如何最快的速度清空所有用户表的数据
- MS SQL Server 2005 开发之分页存储过程
- MS SQL SERVER 2005 数据库还原到MS SQL SERVER2000
- ms sql server 2005数据库日志文件过大,需要清除或者清空
- MS SQL Server 2005网络服务器配置方法
- MS SQL Server 2005 物理查询处理中的各个阶段 (二)
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法