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
i want to accept user input in PL SQL and pass it to procedure, show me a simple program for it?
提问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_variable
to pass external input to PL/SQL variable.ACCEPT
is 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;
/