0

価格プレフィックスに従って製品のコストを返す関数をSQLサーバーに作成したいと考えています。価格のプレフィックスは「+」または「-」です。

私のコードは次のとおりです。

  CREATE FUNCTION calculateOptionCost ( @product_price Decimal, @optionPrice Decimal,    @action varchar )
    RETURNS Decimal
    AS
    BEGIN
    IF (@action == '+')
    RETURN (@product_price + @optionPrice);
    IF (@action == '-')
    RETURN (@product_price - @optionPrice);
    END
    GO  

パラメータで、親製品の価格、その価格、および価格のプレフィックスを渡しました。しかし、このコードを実行すると、システムは次のようなエラーを出します:

The last statement included within function must be a return statement.
4

4 に答える 4

1

値を返さないパスがあります (@actionが a+または aでない場合-)

最後の行として追加RETURN @product_priceすると問題ありません

また

パラメータが a でない場合は a+であると想定し、 -ELSE を使用します

于 2013-08-12T13:59:16.067 に答える
1

これを試して:

CREATE FUNCTION calculateOptionCost (@product_price Decimal, @optionPrice Decimal, @action varchar)
RETURNS Decimal
AS
BEGIN
    Declare 
    @Result Decimal
    IF (@action == '+')
    Begin
        Set @Result = (@product_price + @optionPrice);
    End
    IF (@action == '-')
    Begin
        Set @Result = (@product_price - @optionPrice);
    End
    Return @Result
END
GO
于 2013-08-12T13:59:36.207 に答える
0

関数がすべての実行パスから値を返すことを確認する必要があります。

if conditions are false(@action が + でも - でもない)の両方の場合、関数は何を返しますか?

両方の条件が満たされない場合は、製品価格を返します。

CREATE FUNCTION calculateOptionCost ( @product_price Decimal, @optionPrice Decimal, @action varchar)
RETURNS Decimal
AS
BEGIN
    IF (@action == '+')
        RETURN (@product_price + @optionPrice);
    IF (@action == '-')
        RETURN (@product_price - @optionPrice);
    RETURN @product_price
END
GO 
于 2013-08-12T13:59:26.867 に答える