【发布时间】:2017-12-18 00:56:22
【问题描述】:
我无法在 PLSQL 过程中获取用户输入。我所看到的所有地方都得出了一个不可能的结论,或者它不是为用户输入而制作的 PLSQL 过程。
我的代码:
create or replace
PACKAGE LAB5 AS
daysShow NUMBER;
PROCEDURE show_bizdays2(p_startDate DATE DEFAULT SYSDATE, p_bizDayShow NUMBER);
PROCEDURE show_bizdays2(p_startDate DATE DEFAULT SYSDATE);
FUNCTION Get_Descr(f_sectionId NUMBER) RETURN VARCHAR2;
END LAB5;
说明:
在此代码中,第一个过程接受两个参数日期和工作日数量以显示该日期之前。工作正常。
第二个过程重载了第一个过程,并且应该完全相同,但是它采用 one 参数并提示用户在过程中输入。或者如我的笔记中所述“一个输入参数 - 开始日期,并会提示用户输入需要显示多少天。”
我的问题
你能在过程中提示用户输入吗?
我可以在包中使用一个全局变量来在调用重载过程时提示用户吗?
【问题讨论】:
-
您不能在过程中提示用户输入。与用户交互的方式是编写一个与用户交互的应用程序(或使用现有的应用程序)(不是 SQL 或 PL/SQL 软件),并从该应用程序调用 PL/SQL 过程,通过用户对过程的输入。
-
@mathguy:请将此作为答案。我检查的所有相关问题都说“使用 SQL*PLUS 中的 ACCEPT 命令获取数据,然后将其传递给 PL/SQL 过程”,但这确实是在回答错误的问题。您的评论是正确的:无法直接在 PL/SQL 中获取用户输入。如果愿意,请回复此评论,以便我投票。谢谢。
-
@BobJarvis - 我将其作为评论而不是作为答案发布的原因是......我只是在确认(正确!)答案,OP 已经找到了自己。
-
@mathguy 似乎这是正确的答案。我不知道我的教授为什么要问这个(因为程序不能接受用户输入)所以我不得不在课堂上问他......谢谢你的帮助。如果你回答我会标记正确:)
-
在这种情况下,他可能无法区分 PL/SQL 和 SQL*Plus,并且可能认为在 SQL*Plus 中使用
ACCEPT命令与“在 PL 中获取用户输入”相同/SQL”,in which case you might refer to this question。祝你好运。
标签: sql oracle stored-procedures plsql