Skip to main content

Only native data types are supported in PLSQL programming

create or replace package check1
is
procedure p1(a1 integer);
procedure p1(a1 number);
end check1;
/

create or replace package body check1
is
procedure p1(a1 integer)
as
begin
dbms_output.put_line('Using Integer');
end p1;

procedure p1(a1 number)
as
begin
dbms_output.put_line('Using Number');
end p1;

end;
/

--The above code gets compiled successfully.

--But when you try to execute it ..

begin
check1.p1(8779);
end;

--See what happens..............

This concludes ONLY different native datatypes can be used in PLSQL OO implementation. Happy learning!!!!!

Comments

Anonymous said…
Have you tried with number(10,2) and float?
goldfish said…
Improved Overloading With Numeric Types
Oracle 10g includes improved overloading of numeric types like the following.

-- Create package specification.
CREATE OR REPLACE PACKAGE numeric_overload_test AS
PROCEDURE go (p_number NUMBER);
PROCEDURE go (p_number BINARY_FLOAT);
PROCEDURE go (p_number BINARY_DOUBLE);
END;
/

-- Create package body.
CREATE OR REPLACE PACKAGE BODY numeric_overload_test AS
PROCEDURE go (p_number NUMBER) AS
BEGIN
DBMS_OUTPUT.put_line('Using NUMBER');
END;

PROCEDURE go (p_number BINARY_FLOAT) AS
BEGIN
DBMS_OUTPUT.put_line('Using BINARY_FLOAT');
END;

PROCEDURE go (p_number BINARY_DOUBLE) AS
BEGIN
DBMS_OUTPUT.put_line('Using BINARY_DOUBLE');
END;
END;
/

-- Test it.
SET SERVEROUTPUT ON
BEGIN
numeric_overload_test.go(10);
numeric_overload_test.go(10.1f);
numeric_overload_test.go(10.1d);
END;
/

Popular posts from this blog

Design and Operations ( Employee- Model )

-- DB design drop table emp_Salary; drop table emp_Designation; drop table emp; drop table Designations; drop table Departments; drop table Salary_Bands; drop table Addresses; Create table emp( emp_id number, emp_Name varchar2(20), emp_address_id varchar2(10), emp_created_date date, emp_created_by varchar2(20), constraint e_pk primary key(emp_id) ); Create table Departments( dept_id number, dept_name Varchar2(20), constraints dept_pk primary key(dept_id) ); Create table Designations( dept_id number references Departments(dept_id), desg_id number, desg_description varchar2(20), constraints desg_pk primary key(dept_id,desg_id) ); Create table emp_Designation( emp_id number references emp(emp_id), emp_des_dept_id number references departments(dept_...

How to remove duplicate rows without using DISTINCT or ROWID or GROUP BY methods in Oracle?

Make use of SET operators and CTAS (Create Table AS) method.. Example: Create table tmp_tb1 as Select * from table1 intersect Select * from table1; truncate table table1; insert into table1 select * from tmp_tb1; -- This will now have removed all duplicates in the table... commit; *** You can use UNION operator in place of INTERSECT

Identify current and prev details of a customer

  create table customer_rating( id char, name char, irrating char, jcrrating char, procDate date, flag char ); insert into customer_rating values('A','D','X','Y','28-Jul-21','M'); insert into customer_rating values('A','D','M','L','27-Jul-21','M'); Select cr.id, cr.name, cr_prev.irrating pcob_rating, cr.irrating cob_rating, cr_prev.jcrrating pcob_jcr_rating, cr.jcrrating cob_jcr_rating From Customer_Rating cr join Customer_Rating cr_Prev  ON cr.procdate = '28-Jul-21' AND cr_prev.id = cr.id AND cr_prev.procdate = (  Select max(procdate) from Customer_Rating  Where id=cr.id and procdate < cr.procdate ) ;