Я написал процедуру PL/SQL, как:Чтение IN параметров в запросе в 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
.
Я проверил свой стол, и для параметров, которые я поставляю, он должен возвращать только одну строку. Я думаю, что по какой-то причине значение параметра productid IN не читается в запросе select
. Даже если я предоставляю некоторые случайные значения для параметра productid, он все равно дает ту же ошибку. Я не могу понять, где проблема.
PL/SQL не чувствителен к регистру, поэтому использование CamelCase не создает уникальный идентификатор. – APC
Еще лучше, используйте псевдонимы: 'SELECT quantity INTO qty from Products, где Products.ProductID = checkProdQuantity.productid;' (так что вам не нужно изменять весь код вызова) –