0

ストアド関数内に単純な SELECT ステートメントを埋め込もうとしていますが、これらのエラーがスローされているようです:

SQL ステートメントは無視されます (9 行目)

左括弧がありません (12 行目)

まず、select ステートメントを無視するのはなぜですか? 2 つ目は、12 行目に括弧がないため、そのエラーがどのようにスローされるのかさえ理解できません。

それでも、ここに私の保存された関数コードがあります:

CREATE OR REPLACE FUNCTION tax_calc_sf
(p_basketid IN NUMBER)
RETURN NUMBER
IS
  lv_taxamt_num NUMBER;
  lv_subtotal_num bb_basket.subtotal%TYPE;
  lv_taxrate_num bb_tax.taxrate%TYPE;
BEGIN
  SELECT bb.subtotal, bt.taxrate
  INTO lv_subtotal_num, lv_taxrate_num
  FROM bb_basket bb
  JOIN bb_tax bt USING bt.state = bb.shipstate
  WHERE bb.idbasket = p_basketid;

  lv_taxamt_num := lv_subtotal_num*lv_taxrate_num;
  RETURN lv_taxamt_num;

EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RETURN 0;
END;
/
4

1 に答える 1

2

試す

ON bt.state = bb.shipstate

それ以外の

USING bt.state = bb.shipstate

括弧がないため、エラーMissing left paranthesesは正確にスローされます。この句には括弧が必要です。また、両方のテーブルで結合列に同じ名前を付ける必要があります。これはテーブルには当てはまらないため、句を使用する必要があります。USINGON

于 2012-11-09T21:12:47.463 に答える