plisql

PL/iSQL procedural language

Overview

PackageVersionCategoryLicenseLanguage
ivorysql1.0SIMApache-2.0C
IDExtensionBinLibLoadCreateTrustRelocSchema
9140ivorysql_oraNoYesNoYesNoNosys
9150ora_btree_ginNoYesNoYesYesNosys
9160ora_btree_gistNoYesNoYesYesNosys
9170pg_get_functiondefNoYesNoYesYesNo-
9180plisqlNoYesNoYesYesNopg_catalog
9190gb18030_2022NoYesNoYesYesNopg_catalog

from src/pl/plisql/src/plisql.control and IvorySQL package metadata

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY1.01817161514ivorysql-
RPMPIGSTY5.11817161514ivorysql5-
DEBPIGSTY5.11817161514ivorysql-5-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el8.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

Install

You can install ivorysql directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install ivorysql;          # Install for current active PG version
pig ext install -y ivorysql -v 18  # PG 18
dnf install -y ivorysql5       # PG 18
apt install -y ivorysql-5   # PG 18

Create Extension:

CREATE EXTENSION plisql;

Usage

plisql: PL/iSQL procedural language

PL/iSQL is an Oracle-compatible procedural language for PostgreSQL, provided by the IvorySQL project. It extends PL/pgSQL with Oracle PL/SQL syntax and semantics.

Enabling

CREATE EXTENSION plisql;

Creating Functions

CREATE OR REPLACE FUNCTION hello_world
RETURN VARCHAR2
AS
BEGIN
    RETURN 'Hello, World!';
END;
/

Oracle-Style Procedures

CREATE OR REPLACE PROCEDURE update_salary(
    p_emp_id IN NUMBER,
    p_amount IN NUMBER
)
AS
BEGIN
    UPDATE employees SET salary = salary + p_amount WHERE emp_id = p_emp_id;
END;
/

CALL update_salary(100, 5000);

Key Features

  • Oracle-style BEGIN...END blocks
  • IN, OUT, IN OUT parameter modes
  • Oracle-style exception handling with named exceptions
  • %TYPE and %ROWTYPE attribute references
  • Oracle-compatible cursor syntax (CURSOR...IS, OPEN, FETCH, CLOSE)
  • RETURN instead of RETURNS in function declarations
  • Package-like variable scoping

Differences from PL/pgSQL

  • Uses AS keyword instead of $$ delimiters
  • Supports Oracle-style / as statement terminator
  • VARCHAR2, NUMBER, and other Oracle types natively supported
  • Oracle-compatible DBMS_OUTPUT integration

Last Modified 2026-03-12: add pg extension catalog (95749bf)