0% found this document useful (0 votes)
7 views

Functions

Uploaded by

pvk prasad
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Functions

Uploaded by

pvk prasad
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

============================== FUNCTIONS ==================================

SYNTAX: CREATE OR REPLACE FUNCTION FUNCTION_NAME RETURN DATATYPE IS


BEGIN
------------------
-------------------
END;
1. ONE OF THE DATABASE OBJECT
2. STORE
3. SUB PROGRAM
4. RETURN MAN
5. DML +TCL
6. ALLOW ALL MODES OF PARAMETERS

----------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION F1 RETURN NUMBER IS
BEGIN
RETURN 50;
END;
/

HOW TO CALL A FUNCTION:


THROUGH EXECUTE
VAR X NUMBER;
VAR;

PRINT X;

EXEC :X:=F1;
----------------------------------------------

CALLING THROUGH A PL/SQL PROG USING A LOCAL VARIABLE


DECLARE
V NUMBER;
BEGIN
V:=F1;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
--------------------------------------------

DIRECTLY THORUGHT SELECT STATEMENT

SELECT F1 FROM DUAL;


------------------------------------------------------
DIRECTLY IN A PL/SQL
BEGIN
DBMS_OUTPUT.PUT_LINE(F1);
END;
/
------------------------------------
THROUGH EXEC INTO DIRECT DBMS PACKAGE
PL/SQL procedure successfully completed.

=============================================================================
CREATE OR REPLACE FUNCTION FUN_ADD ( A NUMBER, B NUMBER) RETURN NUMBER IS
BEGIN
RETURN A+B;
END;
/
SELECT FUN_ADD(50,20) FROM DUAL;

EXEC DBMS_OUTPUT.PUT_LINE(FUN_ADD(10,20));

===========================================================================
-------------------------------FUNCTION SELECT--------------------

CREATE OR REPLACE FUNCTION FUN_SEL RETURN VARCHAR IS


V_DPT_NO DEPARTMENTS.DEPARTMENT_ID % TYPE;
V_DPT_NAME DEPARTMENTS.DEPARTMENT_NAME % TYPE;
V_MGR_ID DEPARTMENTS.MANAGER_ID % TYPE;
V_LOC_ID DEPARTMENTS.LOCATION_ID % TYPE;
BEGIN
SELECT DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID
INTO V_DPT_NO,V_DPT_NAME,V_MGR_ID,V_LOC_ID
FROM DEPARTMENTS WHERE DEPARTMENT_ID=10;

RETURN V_DPT_NO||':'||V_DPT_NAME||':'||V_MGR_ID||':'||V_LOC_ID;
END;
/

SELECT FUN_SEL FROM DUAL;


-----------------------------FUNCTION INSERT-------------------------
CREATE OR REPLACE FUNCTION FUN_REP RETURN NUMBER IS
BEGIN
INSERT INTO DEPARTMENTS(DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID)
VALUES (550,'COMPUTERS',210,1700);

RETURN 0;
END;
/
EXEC :X:=FUN_REP;

PRINT X;
------------------------------------ FUNCTION UPDATE---------------------

CREATE OR REPLACE FUNCTION FUN_UPD RETURN NUMBER IS


BEGIN
UPDATE DEPARTMENTS
SET DEPARTMENT_ID=600
WHERE DEPARTMENT_ID=550;
RETURN 1;
END;
/
EXEC :X:=FUN_UPD;

PRINT X;
----------------------------------FUNCTION DELETE ------------------
CREATE OR REPLACE FUNCTION FUN_DEL RETURN NUMBER IS
BEGIN
DELETE DEPARTMENTS
WHERE DEPARTMENT_ID=600;
RETURN 0;
END;
/
EXEC :X:=FUN_DEL;

PRINT X;
--------------------------------FUNCTION MERGE ---------------------

CREATE OR REPLACE FUNCTION MERGE_FUNCTION RETURN NUMBER IS


BEGIN
MERGE INTO TargetProducts T
USING SourceProducts S
ON(T.PRODUCTID=S.PRODUCTID)
WHEN MATCHED THEN UPDATE SET
T.PRICE=S.PRICE
WHEN NOT MATCHED THEN
INSERT ( PRODUCTID,PRODUCTNAME,PRICE)
VALUES( S.PRODUCTID,S.PRODUCTNAME,S.PRICE);
RETURN 0;
END ;
/

EXEC :X:=MERGE_FUNCTION;
=============================================================================

-------------------------------- FUNCTION COMMIT--------------------


CREATE OR REPLACE FUNCTION FUN_COMM RETURN NUMBER IS
BEGIN
COMMIT;
RETURN 0;
END;
/
------------------------------------------------------------------------

You might also like