PLS-00103:在期待以下之一时遇到符号“&”:%符号“%被插入在“&”之前继续[关闭]
Posted
技术标签:
【中文标题】PLS-00103:在期待以下之一时遇到符号“&”:%符号“%被插入在“&”之前继续[关闭]【英文标题】:PLS-00103: Encountered the symbol "&" when expecting one of the following: % The symbol "% was inserted before "&" to continue [closed] 【发布时间】:2021-05-21 19:09:33 【问题描述】:DECLARE
invalid_product EXCEPTION;
BEGIN
UPDATE product
SET name = '&product_description'
WHERE productid = 12;
IF SQL&NOTFOUND THEN
RAISE invalid_product;
END IF;
COMMIT;
EXCEPTION
WHEN invalid_product THEN
DBMS_OUTPUT.PUT_LINE('invalid product number.');
END;
DECLARE
c_id customer.id%type:= -8;
c_name customer.Name%type;
c_addr customer.address%type;
invalid_id EXCEPTION;
BEGIN
IF c_id <0 THEN
RAISE invalid_id;
ELSE
SELECT name,address INTO c_name,c_addr
FROM customer
WHERE id = c_id;
DBMS_OUTPUT.PUT_LINE('name' || c_name);
DBMS_OUTPUT.PUT_LINE('addresS:' || c_addr);
END IF;
EXCEPTION
WHEN invalid_id THEN
DBMS_OUTPUT.PUT_LINE('invalid customer id!');
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('no such customer');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END;
问题:PLS-00201:必须声明标识符“CUSTOMER.ID”。
【问题讨论】:
这是什么 - 你有两个不相关的问题,你把它们都塞在这里了吗?对于第二个错误 -CUSTOMER
表是否存在?它是否有 ID
列(而不是,例如,CUSTOMER_ID
)?
是的,你在第二个问题中是对的,客户表不兴奋,谢谢我发现了错误
【参考方案1】:
是的
SQL%NOTFOUND
不是
SQL&NOTFOUND
您评论说它不起作用;这是给我的。看看:
SQL> select * from product;
PRODUCTID NAME
---------- --------------------
13 some name
SQL> declare
2 invalid_product exception;
3 begin
4 update product
5 set name = '&product_description'
6 where productid = 12;
7
8 if sql%notfound then
9 raise invalid_product;
10 end if;
11
12 commit;
13 exception
14 when invalid_product then
15 dbms_output.put_line('invalid product number.');
16 end;
17 /
Enter value for product_description:
invalid product number. --> here's your message
PL/SQL procedure successfully completed.
SQL>
【讨论】:
再次感谢这些未成年人的错误❤ 声明无效产品例外;开始更新产品集名称 = '%product_description' WHERE productid = 12; IF SQL%NOTFOUND THEN RAISE invalid_product;万一;犯罪; EXCEPTION WHEN invalid_product THEN DBMS_OUTPUT.PUT_LINE('无效的产品编号。');结束 它不工作 它正在工作。你启用 setveroutput 了吗? @Justin,sql%notfound
“如果 INSERT、UPDATE 或 DELETE 语句不影响任何行,或者 SELECT INTO 语句不返回任何行,则结果为 TRUE。否则,它产生 FALSE。”。为什么在这种情况下没有意义?
@Littlefoot - 你是对的。我误读了代码并删除了我的评论。以上是关于PLS-00103:在期待以下之一时遇到符号“&”:%符号“%被插入在“&”之前继续[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PLS-00103:在期待以下之一时遇到符号“IS”::=。 ( @ % ; 非空范围默认字符
PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;