return $self->_shorten_identifier($self->next::method($fqcn));
}
-#
-# Oracle has a different INSERT...RETURNING syntax
-#
-
-sub _insert_returning {
- my ($self, $options) = @_;
-
- my $f = $options->{returning};
-
- my ($f_list, @f_names) = do {
- if (! ref $f) {
- (
- $self->_quote($f),
- $f,
- )
- }
- elsif (ref $f eq 'ARRAY') {
- (
- (join ', ', map { $self->_quote($_) } @$f),
- @$f,
- )
- }
- elsif (ref $f eq 'SCALAR') {
- (
- $$f,
- $$f,
- )
- }
- else {
- $self->throw_exception("Unsupported INSERT RETURNING option $f");
- }
- };
-
- my $rc_ref = $options->{returning_container}
- or $self->throw_exception('No returning container supplied for IR values');
-
- @$rc_ref = (undef) x @f_names;
-
- return (
- ( join (' ',
- $self->_sqlcase(' returning'),
- $f_list,
- $self->_sqlcase('into'),
- join (', ', ('?') x @f_names ),
- )),
- map {
- $self->{bindtype} eq 'columns'
- ? [ $f_names[$_] => \$rc_ref->[$_] ]
- : \$rc_ref->[$_]
- } (0 .. $#f_names),
- );
-}
-
1;