2012-03-24 135 views
-4

是否可以在case声明中调用函数?是否可以在一个case语句中调用函数?

例子:

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

简单方法找出:尝试一下,如果你得到错误= >>>你不能。它甚至更快,然后问一个问题是什么。 – gdoron 2012-03-24 22:09:23

+2

而你了解更多! – 2012-03-24 22:13:07

+2

当您尝试过时发生了什么? – dldnh 2012-03-24 22:15:16

回答

3

艰难的,你可以只尝试...

CASE input_expression

input_expression 是当使用简单CASE格式计算的表达式。 input_expression是任何有效的表达式。

什么是有效的表达式?:

一个表达式可以是以下任意的:

  • 功能 < ====
  • 柱名称
  • Variabl Ë
  • 子查询
  • CASE,NULLIF或COALESCE

资源:

caseexpressions

+0

(请注意,存储过程*不在该列表中...)无论如何,有一个链接到MSDN源? – 2012-03-24 22:14:13

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] 
相关问题