PL/SQL错误PLS-00103-预期yyyy时遇到符号xxxx
我知道这些错误通常是由打字错误引起的;至少我一直在寻找。如果我的问题是打字错误,我看了30分钟后就看不见了,这让我发疯了 我的问题是:我是在做一些根本错误的事情,还是你能看到打字错误 PL/SQL:PL/SQL错误PLS-00103-预期yyyy时遇到符号xxxx,sql,oracle,plsql,Sql,Oracle,Plsql,我知道这些错误通常是由打字错误引起的;至少我一直在寻找。如果我的问题是打字错误,我看了30分钟后就看不见了,这让我发疯了 我的问题是:我是在做一些根本错误的事情,还是你能看到打字错误 PL/SQL: CREATE OR REPLACE PROCEDURE Replenish_Stock(p_id VARCHAR2, n INT) AS no_such_id EXCEPTION; CURSOR pc IS SELECT Product_ID FROM Products; BE
CREATE OR REPLACE PROCEDURE Replenish_Stock(p_id VARCHAR2, n INT)
AS
no_such_id EXCEPTION;
CURSOR pc IS
SELECT Product_ID FROM Products;
BEGIN
IF p_id IN pc THEN
UPDATE Products
SET Stock_Level = Stock_Level + n
WHERE product_id = p_id;
ELSE
RAISE no_such_id;
END IF;
EXCEPTION
WHEN INVALID_NUMBER THEN
DBMS_OUTPUT.PUT_LINE('Bad integer input, ignoring procedure call.');
WHEN no_such_id THEN
DBMS_OUTPUT.PUT_LINE('Bad Product id, ignoring procedure call.');
END;
/
错误代码:
Error(7,14): PLS-00103: Encountered the symbol "PC" when expecting one of the following: (
谢谢您的帮助。您对IN和CURSOR的使用不正确。下面的内容应该适合您。您可以使用
SQL%ROWCOUNT
查看更新查询是否影响表中的任何行
CREATE OR REPLACE PROCEDURE Replenish_Stock(p_id VARCHAR2, n INT)
AS
no_such_id EXCEPTION;
Rows_Updated NUMBER;
BEGIN
UPDATE Products
SET Stock_Level = Stock_Level + n
WHERE product_id = p_id;
IF( SQL%ROWCOUNT = 0) THEN
RAISE no_such_id;
END IF;
EXCEPTION
WHEN INVALID_NUMBER THEN
DBMS_OUTPUT.PUT_LINE('Bad integer input, ignoring procedure call.');
WHEN no_such_id THEN
DBMS_OUTPUT.PUT_LINE('Bad Product id, ignoring procedure call.');
END;
/