'i want to accept user input in PL SQL and pass it to procedure, show me a simple program for it?
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;
/
Solution 1:[1]
You can use &inp_variable to pass external input to PL/SQL variable.ACCEPT is not PL/SQL keyword. use it externally.
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.
Solution 2:[2]
try the below to accept input when executing a pl\sql block.
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
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:
Solution 3:[3]
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 : ';
Declare
Roll_no number;
B_name varchar(20);
Begin
Roll_no:= &Rollno;
B_name := '&BookName'
input(Roll_no,B_name);
end;
/
Solution 4:[4]
set serveroutput on;
Accept Roll_no number prompt 'Enter Roll number : '; Accept B_name varchar2 prompt 'Enter book name : ';
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;
/
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | Subinay Maity |
| Solution 4 | Subinay Maity |
