首页 > 解决方案 > 接受用户输入并设置分配给变量 PL/SQL

问题描述

我正在尝试在存储过程中接受用户输入并将其分配给 VARCHAR 变量。出于某种原因,我收到错误

PLS-00201:必须声明标识符“userinput”。

有任何想法吗?我必须稍后使用它来查看输入在表格中出现的次数。

    CREATE OR REPLACE PROCEDURE nums
    AS
       x_num VARCHAR(20);
    BEGIN
       x_num := &input;
       dbms_output.put_line('You entered: ' || x_num);
    END;
    /

标签: stored-proceduresplsqloracle-sqldeveloper

解决方案


程序无法接收用户输入以响应提示,PLSQL 不是交互式的。当您拥有它时,您实际上并没有与数据库进行通信。实际发生的是符号替换,SQLPLUS 或其他接口(Toad、SQL Developer 等)实际上是在截取符号、请求输入并在将脚本提交到数据库之前对其进行物理更改。如果您想要一个存储过程,您将需要使用@HereGoes 建议的参数,然后为用户提供如下脚本:

Begin 
    nums(pInput => &Input);
end ;

或者提供一个应用程序接口来接收输入值并调用程序或允许用户通过SQLPLUS或其他接口访问并让他们进入脚本——不推荐。


推荐阅读