stored-procedures - 接受用户输入并设置分配给变量 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;
/
解决方案
程序无法接收用户输入以响应提示,PLSQL 不是交互式的。当您拥有它时,您实际上并没有与数据库进行通信。实际发生的是符号替换,SQLPLUS 或其他接口(Toad、SQL Developer 等)实际上是在截取符号、请求输入并在将脚本提交到数据库之前对其进行物理更改。如果您想要一个存储过程,您将需要使用@HereGoes 建议的参数,然后为用户提供如下脚本:
Begin
nums(pInput => &Input);
end ;
或者提供一个应用程序接口来接收输入值并调用程序或允许用户通过SQLPLUS或其他接口访问并让他们进入脚本——不推荐。
推荐阅读
- javascript - 从Angular2中的JSON文件获取特定列
- android - 如何使用 android.mk 在 AOSP 中包含 .aar
- javascript - 如何在 javascript/jquery 中拆分逗号,以便每个单词进入各自的输入字段
- ruby - 对齐多文本ruby大虾报告
- c# - ASP.net MVC 核心 RedirectToPage 错误 - 指定根相对路径错误
- arrays - 如何在 React js 中创建状态数组
- apache - 里面的 SSLProxyProtocol 指令
部分 - php - 在 PHP 中,如何使用 Sessions 或 POST 方法替换 GET 方法?
- c# - 更改自动生成类的 XmlSerialization 的命名空间处理
- android - android中不同expandavble listview中的相同值