【问题标题】:How to prompt for user input on PLSQL procedure如何在 PL SQL 过程中提示用户输入
【发布时间】: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


【解决方案1】:

类似于 sql,您可以使用 & 运算符来获取用户的输入。

例子:

Declare 
Table_nm:='&tblnm'; 
Begin
Execute immediate ('drop table '¦¦' '¦¦table_nm¦¦' '¦¦' purge') ;
End; 

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多