为了账号安全,请及时绑定邮箱和手机立即绑定

sql server 自定义函数不支持动态sql怎么理解呢?

sql server 自定义函数不支持动态sql怎么理解呢?

拉丁的传说 2019-02-13 15:11:29
sql server 自定义函数不支持动态sql怎么理解呢
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超5个赞

因为自定义函数是经过建立的时候是编译的,
所以像getdate()这些不确定因素的值,是随时改变的,所以不允许

推荐:
将类似getdate()之类的可变的因素使用参数带入进函数

执行的时候,再使用getdate(),如:
select dbo.MyFunction(getdate()) from 表

举个例子:
建立自定义函数,如果今天是5号,字段1就等于字段2,否则还等于字段1
以下的写法是错误的:

create function MyFunction(@字段1 int ,@字段2 int)
returns int
as
if day(getdate())=5
return @字段2
else return @字段1

这样写才是正确的:
create function MyFunction(@字段1 int ,@字段2 int,@date datetime)
returns int
as
if day(@date)=5
return @字段2
else return @字段1

调用时:
select 字段1,字段2,dbo.MyFunction(字段1,字段2,getdate()) from表



查看完整回答
反对 回复 2019-03-10
?
慕村225694

TA贡献1880条经验 获得超4个赞

SqlServer的自定义函数不能执行insert、更新操作;不能使用动态sql。

可以考虑存储过程。

查看完整回答
反对 回复 2019-03-10
  • 2 回答
  • 0 关注
  • 1231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信