1.使用函数(sql2000以上)

create FUNCTION dbo.fn_dictCodesConcatByType(@filter varchar(1000))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @v varchar(8000)
select @v = isnull(@v + ',','')+code FROM dict WHERE type=@filter
RETURN @v
END
GO

调用如下:

SELECT dbo.dictCodesConcatByType('Status')

如果你希望做成通用函数,类似如下:(其实是不可行的)

create FUNCTION dbo.fn_strConcat(@tableName varchar(100),@filedName varchar(100),@filter varchar(1000))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @v varchar(8000),@sqlStr nvarchar(2000)
SET @v = ''
set @sqlStr='
select @val = isnull(@val + '','','''')+' + @filedName+' FROM '+@tableName+' WHERE '+@filter exec sp_executesql @sqlStr, N'@val varchar(8000) out', @v out RETURN @v
END
GO

由于Function里不支持  exec / sp_executesql ,所以这个是做不到的

SELECT dbo.fn_strConcat('dict','code','type=''status''')

[Err] 42000 - [SQL Server]只有函数和某些扩展存储过程才能从函数内部执行。

只能修改成存储过程方式

create PROC pr_strConcat
@tableName varchar(100),
@filedName varchar(100),
@filter varchar(1000), --不要加where
@r nvarchar(4000) output
AS
DECLARE @sqlStr nvarchar(2000) --这里只能用nchar,nvarchar,ntext中一个 set @sqlStr='select @val = isnull(@val + '','','''')+' + @filedName+' FROM '+@tableName+' WHERE '+@filter
print @sqlStr exec sp_executesql @sqlStr, N'@val varchar(8000) output', @r output

调用如下:

DECLARE @r nvarchar(4000)
exec pr_strConcat 'dict','code','type=''status''',@r output
print @r

最新文章

  1. 【webGl】threejs实现一个简单的动画-弹跳的小球
  2. 浅谈Android应用保护(零):出发点和背景
  3. 在SharePoint中创建可自定义属性的文件夹
  4. 初识Linux—1
  5. 初识jsonp
  6. 特征值分解与奇异值分解(SVD)
  7. 黄聪:jquery mobile使用form进行post提交表单没有反应,显示空白页解决方案
  8. SQL SERVER 作业(或叫执行计划)
  9. cocoaPods教程
  10. oracle恢复被覆盖的存储过程
  11. 3.使用secureCRT连接PC,LINUX,开发板
  12. python进阶------进程线程(四)
  13. 第十篇:Map/Reduce 工作机制分析 - 数据的流向分析
  14. (转) NAS(神经结构搜索)综述
  15. Mockito学习(zz)
  16. 使用Apache commons-codec Base64实现加解密(转)
  17. Java实现图片添加水印
  18. MySQL Study之--MySQL普通用户无法本地登陆
  19. B-树 B+树 B*树
  20. 登录SQLServer报错:无法连接到DESKTOP-LDJHQGN

热门文章

  1. 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂
  2. [Cookie] Clear Cookie
  3. python 网络编程 TCP/IP socket UDP
  4. save is not valid without active transaction
  5. Call to undefined function Think\C()
  6. Animation(动画效果)
  7. Karma和Jasmine 自动化单元测试环境搭建
  8. LinearLayout属性用法和源码分析
  9. Spring Cache介绍和使用
  10. fiddler-实现https抓包