What is the difference between a procedure and a function in PL/SQL?
Jun 21, 2025 am 12:05 AMIn PL/SQL, the core difference between a procedure and a function is its purpose and return value: 1. The procedure is used to perform operations, and does not force a return value, but can return multiple values ??through the OUT parameter; 2. The function is used to calculate and return a single value, which is often used in expressions or SQL statements; for example, the update_salary procedure can perform update operations, while the get_bonus function returns the calculated bonus amount; the procedure is suitable for data modification and multiple output scenarios, and the function is suitable for calculation logic that needs to be embedded in SQL; in addition, functions can be called in the process, but procedures cannot be called directly in the SQL statement.
In PL/SQL, the main difference between a procedure and a function comes down to their purpose and how they're used. Procedures are meant for performing actions, while functions are designed to compute and return a value.
What a Procedure Does
A procedure is like a small program that does something—like inserting data, updating records, or performing a series of SQL operations. It doesn't have to return anything, although it can use OUT parameters to send values ??back.
For example:
CREATE OR REPLACE PROCEDURE update_salary (emp_id IN NUMBER) IS BEGIN UPDATE employees SET salary = salary * 1.1 WHERE employee_id = emp_id; END;
You'd call this with:
EXEC update_salary(101);
- Procedures are good when you don't need a direct return value.
- They can modify data or perform logic without needing to give something back immediately.
- You can use them in anonymous blocks or call them from other procedures.
How a Function Is Different
A function, on the other hand, must return a value. That makes it useful in expressions or SQL statements where a value is expected.
Here's a basic function:
CREATE OR REPLACE FUNCTION get_bonus (emp_id IN NUMBER) RETURN NUMBER IS bonus_amt NUMBER; BEGIN SELECT salary * 0.1 INTO bonus_amt FROM employees WHERE employee_id = emp_id; RETURN bonus_amt; END;
And you'd use it like this:
SELECT get_bonus(101) FROM dual;
- Functions are ideal when you need to calculate and return a result.
- They're often used inside SQL queries or assignments.
- Be careful: if your function has DML (like INSERT or UPDATE), you might run into issues using it directly in SQL unless you define it with
PRAGMA AUTONOMOUS_TRANSACTION
or allow side effects.
When to Use Which
Use a procedure when:
- You're doing an action rather than calculating a value.
- You want to change data (like inserts, updates, deletes).
- You need multiple outputs via OUT parameters.
Use a function when:
- You need to return a single value for use elsewhere.
- You plan to call it inside a SQL query or expression.
- The logic is more about transformation or calculation than modification.
Also keep in mind:
- Functions can be called from within procedures.
- Procedures can't be directly called from a SQL statement unless wrapped in a function or used via a ref cursor.
So, basically:
- Procedures do things , optionally returning values ??through OUT parameters.
- Functions return a value , and are usually used where a computed result is needed.
That's the core distinction — not too complicated once you see how each fits into real usage.
The above is the detailed content of What is the difference between a procedure and a function in PL/SQL?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PL/SQLextendsSQLwithproceduralfeaturesbyaddingvariables,controlstructures,errorhandling,andmodularcode.1.Itallowsdeveloperstowritecomplexlogiclikeloopsandconditionalswithinthedatabase.2.PL/SQLenablesthedeclarationofvariablesandconstantsforstoringinte

OracleDataPump (expdp/impdp) has obvious advantages over traditional export/import tools, and is especially suitable for large database environments. 1. Stronger performance: based on server-side processing, avoids client-side transfer bottlenecks, supports parallel operations, significantly improves the export and import speed; 2. More fine-grained control: provides parameters such as INCLUDE, EXCLUDE and QUERY to realize multi-dimensional filtering such as object type, table name, data row; 3. Higher recoverability: supports job pause, restart and attachment, which facilitates long-term task management and failure recovery; 4. More complete metadata processing: automatically record and rebuild index, constraints, permissions and other structures, supports object conversion during import, and ensures consistency of the target library.

Oracle sequences are independent database objects used to generate unique values ??across sessions and transactions, often used for primary keys or unique identifiers. Its core mechanism is to generate a unique value through NEXTVAL increment, and CURRVAL obtains the current value without incrementing. Sequences do not depend on tables or columns, and support custom start values, step sizes and loop behaviors. Common scenarios during use include: 1. Primary key generation; 2. Order number; 3. Batch task ID; 4. Temporary unique ID. Notes include: transaction rollback causes gaps, cache size affects availability, naming specifications and permission control. Compared to UUID or identity columns, sequences are suitable for high concurrency environments, but they need to be traded down based on the needs.

TheOracleListeneractsasatrafficcopfordatabaseconnectionsbymanaginghowclientsconnecttothecorrectdatabaseinstance.Itrunsasaseparateprocesslisteningonaspecificnetworkaddressandport(usually1521),waitsforincomingconnectionrequests,checkstherequestedservic

In Oracle, the schema is closely associated with the user account. When creating a user, the same-name mode will be automatically created and all database objects in that mode are owned. 1. When creating a user such as CREATEUSERjohn, create a schema named john at the same time; 2. The tables created by the user belong to their schema by default, such as john.employees; 3. Other users need authorization to access objects in other schemas, such as GRANTSELECTONsarah.departmentsTOjohn; 4. The schema provides logical separation, used to organize data from different departments or application modules.

TemporarytablespacesinOracleareusedtostoretemporarydataduringSQLoperationslikesorting,hashing,andglobaltemporarytables.1)SortingoperationssuchasORDERBY,GROUPBY,orDISTINCTmayrequirediskspaceifmemoryisinsufficient.2)Hashjoinsonlargedatasetsusetemporary

AnOracleinstanceistheruntimeenvironmentthatenablesaccesstoanOracledatabase.Itcomprisestwomaincomponents:theSystemGlobalArea(SGA)andbackgroundprocesses.1.TheSGAincludesthedatabasebuffercache,redologbuffer,andsharedpool,whichmanagedataandSQLstatements.

Methods to cloning Oracle databases include using RMANDuplicate, manual recovery of cold backups, file system snapshots or storage-level replication, and DataPump logical cloning. 1. RMANDuplicate supports replication from active databases or backups, and requires configuration of auxiliary instances and execution of DUPLICATE commands; 2. The cold backup method requires closing the source library and copying files, which is suitable for controllable environments but requires downtime; 3. Storage snapshots are suitable for enterprise-level storage systems, which are fast but depend on infrastructure; 4. DataPump is used for logical hierarchical replication, which is suitable for migration of specific modes or tables. Each method has its applicable scenarios and limitations.
