NAME
DBIO::Oracle::SQLMaker - Oracle-specific SQL generation for DBIO
VERSION
version 0.900001
DESCRIPTION
DBIO::SQLMaker subclass for Oracle databases. Extends standard SQL generation with:
Oracle
CONNECT BY/START WITH/ORDER SIBLINGS BYhierarchical query support via theconnect_by,connect_by_nocycle,start_with, andorder_siblings_byresultset attributes.PRIORoperator support in WHERE clauses.Automatic identifier shortening to fit Oracle's 30-character limit, using an MD5-based suffix (requires Digest::MD5, Math::BigInt, Math::Base36).
Oracle-style
RETURNING ... INTO ?syntax for insert-returning.
Used automatically by DBIO::Oracle::Storage.
METHODS
apply_limit
Oracle has no native LIMIT keyword. Wrap the statement in a ROWNUM subquery via the inherited _RowNum dialect instead of the base LIMIT ? syntax.
_pseudo_columns
if ($sql_maker->_pseudo_columns->{ uc $name }) { ... }
Returns a hashref whose keys are the Oracle hierarchical/row pseudo-columns (LEVEL, ROWNUM, ROWID, CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF) that must never be quoted. These are not real identifiers: quoting them yields e.g. "LEVEL" which Oracle rejects with ORA-00904: invalid identifier. _quote consults this set and returns such a label verbatim.
CONNECT_BY_ROOT is a prefix operator, not a standalone identifier, so it never reaches _quote on its own and is intentionally absent.
_shorten_identifier
my $short = $sql_maker->_shorten_identifier($long_name, \@keywords);
Shortens an identifier to fit Oracle's 30-character limit. Uses camelCase compression of @keywords (or the identifier itself if none supplied), followed by a base-36 MD5 suffix to guarantee uniqueness.
_insert_returning
Generates Oracle RETURNING ... INTO ? SQL for insert-returning operations. The returned values are captured into scalar references in the returning_container option.
SEE ALSO
DBIO::Oracle::Storage - Oracle storage (uses this SQL maker)
DBIO::Oracle::SQLMaker::Joins - WHERE-clause join syntax for Oracle < 9
DBIO::SQLMaker - Base SQL maker class
AUTHOR
DBIO & DBIx::Class Authors
COPYRIGHT AND LICENSE
Copyright (C) 2026 DBIO Authors Portions Copyright (C) 2005-2025 DBIx::Class Authors Based on DBIx::Class, heavily modified.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.