'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