2016-09-27 2 views
0

私はこのクエリを持っていた:SQL Serverのreturn文

SELECT t.price/100 as P 
FROM mytable.user as t 
WHERE t.price = ?; 

しかし、私は、パラメータ値があるかどうかを確認したいが、SQLエラーを回避するために、SELECTの前にゼロに等しいので、私はこれを試してみた:

IF (CAST(? AS float) = 0) 
BEGIN 
    RETURN 0 
END 
ELSE 
BEGIN 
    SELECT t.price/100 as P 
    FROM mytable.user as t 
    WHERE t.price = ? 
END; 

しかし、私はこのエラーメッセージ(3行目)している:

戻り値を持つRETURN文は、この コンテキストで使用することはできません。

+1

ビューまたは手順ですか?文脈とは何ですか? – qub1n

+0

't.price = 0'がSQLエラーを引き起こすのはなぜですか? – Paddy

+0

Pとしてt.price/100を選択すると、エラーが発生します... –

答えて

0

代わりにreturn 0を使用しないでください。select 0をpとして使用してください。以下はサンプルです。

IF (CAST(? AS float) = 0) 
BEGIN 
    select 0 as P 
END 
ELSE 
BEGIN 
    SELECT t.price/100 as P 
    FROM mytable.user as t 
    WHERE t.price = ? 
END; 
+0

ありがとう、それは動作します! –