Constant

Constant in PL/SQL has to be declared during the initialization phase only
Instead of := we can also use DEFAULT keyword in CONSTANT
NOT NULL can be imposed on any variable by placing it before the assignment or DEFAULT operator

SET SERVEROUTPUT ON;
 
DECLARE
	v_pi CONSTANT NUMBER(7,6) := 3.141;
	v_even CONSTANT NUMBER(10) NOT NULL DEFAULT 02468;
BEGIN
	DBMS_OUTPUT.PUT_LINE(v_pi || " " || v_even);
END;
/

Bind/ Host Variable

SET SERVEROUTPUT ON;
 
VARIABLE v_bind1 VARCHAR2(10); 		# Declare Bind Variable
VARIABLE v_bind2 VARCHAR2(10);
 
EXEC :v_bind1 := 'David'; 			# Initialize variable method 1
 
BEGIN
	DBMS_OUTPUT.PUT_LINE(:v_bind1);
	:v_bind2 := 'Varghese'; 		# Initialize variable method 2
END;
/
 
PRINT :v_bind2;
 
SET AUTOPRINT ON; 					# Will cause all the bind variables to be printed automatically
 
VARIABLE v_bind1 VARCHAR2(10);
EXEC :v_bind1 := 'David';

Anchor Type Keyword

SET SERVEROUTPUT ON; 										# Shows the result of the query on the standard output
 
DECLARE
	v_fname employees.first_name%TYPE; 						# Anchor %TYPE: Refers to the DB column type
	v_lname VARCHAR2(10);
	v_num NUMBER := &enter_a_number; 						# User Input
BEGIN
	SELECT first_name, last_name INTO v_fname, v_lname 		# INTO saves the result in a varaible
	FROM employees
	WHERE employee_id = 100;
	DBMS_OUTPUT.PUT_LINE(v_fname || " " || v_lname); 		# Print the result on terminal
END;
/

User Input

Accept keyword is used to make user defined message
& is used to declare a user defined input

SET SERVEROUTPUT ON;
 
ACCEPT user_input NUMBER PROMPT 'Enter your age ?';
 
DECLARE
	num1 NUMBER := &user_input;
BEGIN
	IF num1 < 18 THEN
		DBMS_OUTPUT.PUT_LINE('You are underage');
	ELSE
		DBMS_OUTPUT.PUT_LINE('Hello user');
	END IF;
END;
 
/