sql server 自定义函数不支持动态sql怎么理解呢
2 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
因为自定义函数是经过建立的时候是编译的,
所以像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表
- 2 回答
- 0 关注
- 1290 浏览
添加回答
举报
0/150
提交
取消