SQL函数怎么执行动态sql语句呢?

life923 2017-07-23 06:47:38
我想要的效果是输入sql语句 返回结果
select dbo.row2col(' select top 1 car_name from Car ')


ALTER function [dbo].[row2col](@sql varchar(100))
Returns real
As
Begin
declare @s varchar(8000)
set @s = ''
EXEC sp_executesql @sql
Return @s
End


这样提示
只有函数和某些扩展存储过程才能从函数内部执行。
要怎么写呢?
...全文
716 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 版主 2017-07-24
  • 打赏
  • 举报
回复
函数中不能执行动态语句、print、newid等等。 建议换一个思路。
life923 2017-07-23
  • 打赏
  • 举报
回复
目前的行转列是用下面的,我想要的是 直接传sql就行了 可以通用 create function f_get_car_no(@cust_id varchar(50)) returns varchar(8000) as begin declare @retval varchar(8000) set @retval = '' select @retval = convert(varchar(50),car_no) + ',' + @retval from Car where cust_id = @cust_id if len(@retval) > 0 set @retval = left(@retval, len(@retval) - 1) return @retval end
life923 2017-07-23
  • 打赏
  • 举报
回复
引用 1 楼 z10843087 的回复:
不能在函数中执行存储过程。你最开始的需求是什么
需求就是 行转列啊 输入sql ,返回逗号分隔的字符串 select dbo.row2col(' select car_name from Car ')
二月十六 版主 2017-07-23
  • 打赏
  • 举报
回复
把函数方法改成存储过程吧,函数不能调用存储过程或使用execute sp_executesql 或者execute之类的
OwenZeng_DBA 2017-07-23
  • 打赏
  • 举报
回复
引用 楼主 life923 的回复:
我想要的效果是输入sql语句 返回结果 select dbo.row2col(' select top 1 car_name from Car ') ALTER function [dbo].[row2col](@sql varchar(100)) Returns real As Begin declare @s varchar(8000) set @s = '' EXEC sp_executesql @sql Return @s End 这样提示 只有函数和某些扩展存储过程才能从函数内部执行。 要怎么写呢?
不能在函数中执行存储过程。你最开始的需求是什么

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧