SQL中用户定义函数的语法错误

SQL中用户定义函数的语法错误,sql,sql-server,Sql,Sql Server,我无法理解为什么计算多维数据集体积的代码会导致错误过程或函数“CubicVolume”需要参数“@CubeLength”,而该参数未提供 CREATE FUNCTION CubicVolume -- Input dimensions in centimeters ( @CubeLength decimal(4,1), @CubeWidth decimal(4,1), @CubeHeight decimal(4,1) ) RETURNS decimal(12,3) AS BEGIN RE

我无法理解为什么计算多维数据集体积的代码会导致错误过程或函数“CubicVolume”需要参数“@CubeLength”,而该参数未提供

CREATE FUNCTION CubicVolume
-- Input dimensions in centimeters
(
@CubeLength decimal(4,1), 
@CubeWidth  decimal(4,1),
@CubeHeight decimal(4,1)
)
RETURNS decimal(12,3)
AS
   BEGIN
RETURN(@CubeLength * @CubeWidth * @CubeHeight)
END
然后我尝试使用
EXEC CubicVolume
执行它,这就是执行存储过程的方式。 我知道有些语法是错误的,但我不知道在哪里


谢谢

我假设是SQL Server

您定义了一个标量函数,但试图像调用存储过程一样调用它。这两者不一样。存储过程基本上是SQL语句的批处理,它们按顺序执行,并可以选择将结果集发送回客户端。标量函数的行为类似于内置函数(例如,
LEN()
CHARINDEX()
ABS()
,等等)。也就是说,它们属于
SELECT
语句或道德等效语句中的表达式。因此,您需要在
SELECT
语句中使用函数,其中使用列或表达式。示例:

SELECT dbo.CubicVolume(12, 5, 3) AS vol
-- result is: 180

SELECT CubeName, l, w, h FROM dbo.SomeTable WHERE dbo.CubicVolume(l, w, h) > 200
-- result could be something like: MyCube, 10, 10, 10 etc.

基本上,它相当于使用基于列或常量的数学表达式。您不能在其上使用
EXEC

您使用的是什么RDBMS?请为问题添加一个适当的标签:mysql、oracle、sql server等。您在编写问题时没有看到红色框提醒您这样做吗?您在执行函数时是否传递了任何参数?bzzzt!!!不行!请不要写“不行”。请解释为什么它不起作用。错误?意外的结果?请解释。@Nick.McDermaid:在这种情况下,问题很明显,但总的来说,我对“不起作用”(无论是在这个网站上还是在我的日常工作中)感到恼火。@Nick.McDermaid抱歉,我将编辑这篇文章