oracle 我想在 PL SQL 中接受用户输入并将其传递给过程,给我看一个简单的程序吗?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/47135021/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 03:28:47  来源:igfitidea点击:

i want to accept user input in PL SQL and pass it to procedure, show me a simple program for it?

oracleplsql

提问by user8886083

i want accept user input and pass it to procedure, accept prompt should execute only when i enter
' / '

我想接受用户输入并将其传递给程序,接受提示应仅在我输入“/”时执行

        Create OR Replace Procedure  input(Roll IN number, Book_n IN varchar)
        AS
        <--procedure body-->
        end;
        /

        Declare
        Roll_no  number;
        B_name varchar(20);
        Begin 
        Accept Rollno number prompt 'Enter Roll number : ';
        Accept BookName varchar(20) prompt 'Enter book name : ';

        input(Rollno,BookName);
        end; 
        /

回答by Kaushik Nayak

You can use &inp_variableto pass external input to PL/SQL variable.ACCEPTis not PL/SQL keyword. use it externally.

您可以使用&inp_variable将外部输入传递给 PL/SQL 变量。ACCEPT不是 PL/SQL 关键字。在外部使用它。

SET SERVEROUTPUT ON
ACCEPT Rollno NUMBER PROMPT 'Enter Roll number : ';
ACCEPT BookName varchar(20) prompt 'Enter book name : ';

DECLARE
   Roll_no   NUMBER := &Rollno;
   B_name    VARCHAR (20) := '&BookName';
BEGIN
   input (Roll_no, B_name);
END;
/

accept prompt should execute only when I enter ' / '

接受提示应仅在我输入“/”时执行

It is not a proper way to run your code like this. use other checks inside proc to control the user input.

像这样运行代码不是正确的方法。在 proc 内使用其他检查来控制用户输入。

回答by Azam

try the below to accept input when executing a pl\sql block.

在执行 pl\sql 块时尝试下面的方法来接受输入。

you can use '/', if you already executed the pl\sql block or write block using 'sql>ed'

use '&' followed by a name to accept input from user. i.e. &Roll_No

如果您已经使用 'sql> ed'执行了 pl\sql 块或写入块,则可以使用 '/ '

使用“&”后跟一个名称来接受来自用户的输入。即&Roll_No

Declare
  Roll_no  number;
  B_name varchar(20);
Begin 
  --Accept Rollno number prompt 'Enter Roll number : ';
  Roll_no := &Roll_no;
  --Accept BookName varchar(20) prompt 'Enter book name : ';
  B_name := '&Book_Name';
  input(Roll_no,B_name);
end; 
/

this will prompt for input ..

这将提示输入..

  • Enter value for Roll_no:
  • Enter value for Book_Name:
  • 输入 Roll_no 的值:
  • 输入 Book_Name 的值:

回答by Subinay Maity

Create OR Replace Procedure input(Roll IN number, Book_n IN varchar) AS <--procedure body--> end; / Accept Rollno number prompt 'Enter Roll number : '; Accept BookName varchar(20) prompt 'Enter book name : ';

创建或替换过程输入(Roll IN number, Book_n IN varchar) AS <--procedure body--> end; /接受卷号提示'输入卷号:'; 接受 BookName varchar(20) 提示'输入书名:';

    Declare
    Roll_no  number;
    B_name varchar(20);
    Begin

    Roll_no:= &Rollno;
    B_name := '&BookName'

    input(Roll_no,B_name);
    end; 
    /

回答by Subinay Maity

set serveroutput on;

设置服务器输出;

Accept Roll_no number prompt 'Enter Roll number : '; Accept B_name varchar2 prompt 'Enter book name : ';

Accept Roll_no number prompt 'Enter Roll number:'; 接受 B_name varchar2 提示'输入书名:';

Declare
    Roll_no  number:= NULL;
    B_name varchar2(20):= NULL;

    Begin

    Roll_no:= &Roll_no;
    B_name:= '&B_name';

    input(Roll_no,B_name);

    end; 
    /