我寫了一個PL/SQL程序作爲查詢:讀取參數在PL/SQL
CREATE OR REPLACE PROCEDURE checkProdQuantity (productid IN number, orderqty IN number)
IS
qty number;
qty_diff number;
BEGIN
SELECT quantity INTO qty from Products where ProductID=productid;
IF orderqty>qty THEN
dbms_output.put_line('Ordered quatity is greater than available quantity');
ELSE
qty_diff:=qty-orderqty;
UPDATE Products set quantity=qty_diff where ProductID=productid;
END IF;
END;
/
但是,當我嘗試用有效的參數來執行這個程序,它顯示了一個錯誤:exact fetch returns more than the requested number of rows
。
我檢查了我的表,併爲我提供的參數應該只返回一行。我認爲出於某種原因,在select
查詢中沒有讀取productid IN參數的值。即使我爲productid參數提供了一些隨機值,它仍會給出相同的錯誤。我無法弄清楚問題出在哪裏。
PL/SQL不區分大小寫,因此使用CamelCase不會創建唯一標識符。 – APC 2014-11-02 11:17:23
更好的辦法是使用別名:'SELECT Products INTO qty from Products where Products.ProductID = checkProdQuantity.productid;'(所以你不需要改變所有的調用代碼) – 2014-11-03 01:32:30