PL / SQL将SELECT嵌入到函数中

时间:2012-11-09 21:09:53

标签: plsql

我正在尝试在存储函数中嵌入一个简单的SELECT语句,但它似乎抛出了这些错误:

  

忽略SQL语句(第9行)

  

缺少左括号(第12行)

首先,为什么忽略我的select语句? 第二,我在第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;
/

1 个答案:

答案 0 :(得分:2)

尝试

ON bt.state = bb.shipstate

而不是

USING bt.state = bb.shipstate

错误地将<{1}}错误地抛出,因为没有parantheses。 Missing left parantheses条款需要parantheses。它还要求在两个表中同等地命名连接列。由于表中不是这种情况,因此必须使用USING子句。