接受用户输入并设置分配给变量 PL/SQL

Posted

技术标签:

【中文标题】接受用户输入并设置分配给变量 PL/SQL【英文标题】:Accept user input and set assign to variable PL/SQL 【发布时间】:2019-09-24 18:49:50 【问题描述】:

我正在尝试在存储过程中接受用户输入并将其分配给 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;
    /

【问题讨论】:

本例中没有标识符userinput。错误是input吗?还是实际代码中的&userinput 用户输入实际上来自运行脚本时提示我输入的弹出框 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

我建议将输入设为参数。

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

【讨论】:

输入,在这种情况下,必须来自提示的用户输入,而不是作为参数传递。

以上是关于接受用户输入并设置分配给变量 PL/SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pl/sql 循环接受用户输入?

尝试创建一个在 pl/sql 中接受用户输入的过程 [重复]

接受用户的员工编号 从“员工”表中获取员工详细信息并将其存储到 PL SQL 记录类型变量并打印相同

sqlplus pl/sql Date/Time 用户输入理解为绑定变量

PL/SQL语句快捷输入设置

PL/SQL Oracle 10g 询问用户输入(替代变量除外)