SQLServer:只有函数和某些扩展存储过程才能从函数内部执行

本文介绍了在SQLServer中遇到的一个问题,即在函数内部使用`sp_executesql`执行动态SQL时,收到错误提示“只有函数和某些扩展存储过程才能从函数内部执行”。通过分析,了解到这是由于函数不能调用复杂的存储过程或执行动态SQL的限制。解决方案是将函数改为存储过程,或者在应用程序代码层面处理动态SQL执行。
摘要由CSDN通过智能技术生成

今天写了个函数,把表名作为参数,然后通过Execute执行SQL来返回值。因为表名是按照日期格式定义的。

SQL如下图:

Create Function dbo.F_GetDepartFullName(
    @DepartID varchar(100),
    @DepTableName varchar(100)
) returns nvarchar(max)
as
begin
    declare @sql nvarchar(max)
    set @sql=''
    declare @fullname nvarchar(max)
    set @fullname=''
    
    set @sql =' with T as ( '
    set @sql+=Char(10)+Char(13)
    set @sql+='        select id,name,parentid from '+@DepTableName+' with(nolock) where id='+@DepartID
    set @sql+=Char(10)+Char(13)
    set @sql+='        union all '
    set @sql+=Char(10)+Char(13)
    set @sql+='        select dep.id,dep.name,dep.parentid from '+@DepTableName+&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值