是否可以在case语句中调用函数?

时间:2012-03-24 22:08:14

标签: sql function case

是否可以在case声明中调用函数?

示例:

(CASE WHEN (((POWER((1+x1/x2),Term) - 1) > 0) THEN 
    10 ELSE dbo.fnx(x1,x2,x3) END) as [123]

2 个答案:

答案 0 :(得分:3)

你可以尝试一下......

CASE input_expression

input_expression 是否在使用简单CASE格式时评估表达式。 input_expression是任何有效的表达式。

什么是有效表达?:

  

表达式可以是以下任何一种:

  • 功能< ====
  • 列名
  • 可变
  • 子查询
  • CASE,NULLIF或COALESCE

<强>资源:

caseexpressions

答案 1 :(得分:0)

当然可以,你错过了一个括号:

(CASE WHEN (((POWER((1+x1/x2),Term) - 1) > 0)) THEN   
10 ELSE dbo.fnx(x1,x2,x3) END) as [123]  

如果这不能解决您的问题,您可以调查用户的权限

编辑:

第二个想法是你有太多括号,这更具可读性:

CASE WHEN POWER(1+x1/x2,Term) - 1 > 0 THEN   
10 ELSE dbo.fnx(x1,x2,x3) END as [123]