【问题标题】:User input with accept and promp接受和提示的用户输入
【发布时间】:2019-06-04 00:16:15
【问题描述】:

如果他们的销售量超过用户输入的数量,我需要对 6 家假冒公司的每个销售人员进行报告。我在使用 oracle Db 的 sql 开发人员中。

我要求在我的班上学习他们是怎么做的,他们做的事情对我不起作用,我总是在接受/提示时出错。

/
accept temp default '100';
/
 when '&temp' < 90.00 then raise too_cold;

我也尝试过这样使用它:

accept temp prompt 'Input degree (numerically in degrees F)?:';

我想用文字显示提示,以便用户知道输入什么并使用我得到的数字。

【问题讨论】:

  • temp 变量添加数据类型,如以下堆栈溢出 问题所示:SQL*Plus how to accept text variable from prompt?
  • Erreur(4,13):PLS-00103:在预期以下情况之一时遇到符号“NUMBER”::=。 ( @ % ; 不为空范围默认字符仍然得到那个

标签: oracle plsql sqlplus


【解决方案1】:

帮助自己。

SQL> help accept

 ACCEPT
 ------

 Reads a line of input and stores it in a given substitution variable.

 ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE]
 [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]

我们开始吧:

SQL> set ver off
SQL>
SQL> accept temp number default 20 prompt 'Enter department number: '
Enter department number: 10
SQL> select deptno, ename from emp where deptno = &temp;

    DEPTNO ENAME
---------- ----------
        10 CLARK
        10 KING
        10 MILLER

SQL>

如果没有输入,则使用默认值:

SQL> accept temp number default 20 prompt 'Enter department number: '
Enter department number:
SQL> select deptno, ename from emp where deptno = &temp;

    DEPTNO ENAME
---------- ----------
        20 SMITH
        20 JONES
        20 SCOTT
        20 ADAMS
        20 FORD

SQL>

【讨论】:

  • 如果它是一个过程,那么让它接受一个参数(create procedure px (par_temp in number default 20) as ...)并从那里继续。请注意,它不会像SELECT 那样返回数据。也许你应该使用一个返回 ref cursor 的函数。
猜你喜欢
  • 2013-10-10
  • 2021-11-17
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2011-01-09
  • 2020-06-30
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多