gpt4 book ai didi

sql - PLS-00201 : identifier 'USER INPUT' must be declared

转载 作者:行者123 更新时间:2023-12-04 21:39:13 25 4
gpt4 key购买 nike

当我尝试在提示“请输入区域:”下输入用户输入时,出现错误“PLS-00201:标识符 'CHICAGO' 必须声明”,例如,如果我输入“CHICAGO”(当然不带引号) ) 我收到 PLS-00201 错误。我不明白为什么 - 有什么想法吗?提前致谢。

ACCEPT p_1 PROMPT 'PLEASE ENTER THE REGION:'

DECLARE
V_CHILD REGIONS.CHILD_NAME%TYPE := &p_1;
V_PARENT REGIONS.PARENT_NAME%TYPE;
CURSOR REG_CUR (p_child_name varchar2) IS
SELECT UPPER(CHILD_NAME)
FROM REGIONS
where CHILD_NAME = p_child_name;

BEGIN
OPEN REG_CUR (V_CHILD);
FETCH reg_cur INTO V_CHILD;
WHILE REG_CUR%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(V_CHILD);
FETCH reg_cur INTO V_CHILD;
END LOOP;
CLOSE REG_CUR;
END;

最佳答案

如果您需要一个字符串,则需要在使用它时将替换变量括在引号中:

  V_CHILD  REGIONS.CHILD_NAME%TYPE := '&p_1';

实际上,它试图将替换值解释为标识符,即另一个变量或列名。因此,如果您输入 CHICAGO它会看到:
  V_CHILD  REGIONS.CHILD_NAME%TYPE := CHICAGO;

如果您输入了 "CHICAGO" :
  V_CHILD  REGIONS.CHILD_NAME%TYPE := "CHICAGO";

在 Oracle 中使用双引号仍然表示标识符。您实际上可以输入 'CHICAGO' ,在您的输入中使用引号,它会起作用 - 但必须记住这样做并不理想。

如果您 set verify on在 SQL*Plus 或 SQL Developer 中,您可以看到每次替换的前后,这可以帮助识别这样的事情。

关于sql - PLS-00201 : identifier 'USER INPUT' must be declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com