---
name: "SQL::Statement::Function"
section: "3pm"
platform: "linux"
package: "libsql-statement-perl"
version: "1.414-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SQL::Statement::Function"
---

# SQL::Statement::Function(3pm)

abstract base class for all function executing terms

## NAME

SQL::Statement::Function - abstract base class for all function executing terms

## SYNOPSIS

```
  # this class does not have a common constructor, because all derived classes
  # have their special requirements
```

## DESCRIPTION

SQL::Statement::Function is an abstract base class providing the interface for all function executing terms.

## INHERITANCE

```
  SQL::Statement::Function
  ISA SQL::Statement::Term
```

## METHODS

### DESTROY

Destroys the term and undefines the weak reference to the owner as well as the reference to the parameter list.

## NAME

SQL::Statement::Function::UserFunc - implements executing a perl subroutine

## SYNOPSIS

```
  # create an user function term with an SQL::Statement object as owner,
  # specifying the function name, the subroutine name (full qualified)
  # and the parameters to the subroutine
  my $term = SQL::Statement::Function::UserFunc->new( $owner, $name, $sub, \@params );
  # access the result of that operation
  $term->value( $eval );
```

## DESCRIPTION

SQL::Statement::Function::UserFunc implements a term which returns the result of the specified subroutine.

## INHERITANCE

```
  SQL::Statement::Function
  ISA SQL::Statement::Term
```

## METHODS

### new

Instantiates a new `"SQL::Statement::Function::UserFunc"` instance.

### value

Invokes the given subroutine with the values of the params and return it's result:

```
    my @params = map { $_->value($eval); } @{ $self->{PARAMS} };
    return $subpkg->$subname( $self->{OWNER}, @params );
```

## NAME

SQL::Statement::Function::NumericEval - implements numeric evaluation of a term

## SYNOPSIS

```
  # create an user function term with an SQL::Statement object as owner,
  # specifying the expression to evaluate and the parameters to the subroutine
  my $term = SQL::Statement::NumericEval->new( $owner, $expr, \@params );
  # access the result of that operation
  $term->value( $eval );
```

## DESCRIPTION

SQL::Statement::Function::NumericEval implements the numeric evaluation of a term. All parameters are expected to be numeric.

## INHERITANCE

```
  SQL::Statement::Function::NumericEval
  ISA SQL::Statement::Function
    ISA SQL::Statement::Term
```

## METHODS

### new

Instantiates a new `"SQL::Statement::Function::NumericEval"` instance. Takes *$owner*, *$expr* and *\\@params* as arguments (in specified order).

### value

Returns the result of the evaluated expression.

## NAME

SQL::Statement::Function::Trim - implements the built-in trim function support

## SYNOPSIS

```
  # create an trim function term with an SQL::Statement object as owner,
  # specifying the spec, char and the parameters to the subroutine
  my $term = SQL::Statement::Trim->new( $owner, $spec, $char, \@params );
  # access the result of that operation
  $term->value( $eval );
```

## DESCRIPTION

SQL::Statement::Function::Trim implements string trimming.

## INHERITANCE

```
  SQL::Statement::Function::Trim
  ISA SQL::Statement::Function
    ISA SQL::Statement::Term
```

## METHODS

### new

Instantiates a new `"SQL::Statement::Function::Trim"` instance. Takes *$owner*, *$spec*, *$char* and *\\@params* as arguments (in specified order).

Meaning of the parameters:

- *$spec*

  Can be on of 'LEADING', 'TRAILING' 'BOTH'. Trims the leading chars, trailing chars or at both ends, respectively.

  Defaults to 'BOTH'.

- *$char*

  The character to trim - defaults to `' '`

- *\\@params*

  Expected to be an array with exact 1 element (more are not evaluated).

### value

Returns the trimmed value of first parameter argument.

## NAME

SQL::Statement::Function::SubString - implements the built-in sub-string function support

## SYNOPSIS

```
  # create an substr function term with an SQL::Statement object as owner,
  # specifying the start and length of the sub string to extract from the
  # first element of \@params
  my $term = SQL::Statement::SubString->new( $owner, $start, $length, \@params );
  # access the result of that operation
  $term->value( $eval );
```

## DESCRIPTION

SQL::Statement::Function::SubString implements a sub-string extraction term.

## INHERITANCE

```
  SQL::Statement::Function::SubString
  ISA SQL::Statement::Function
    ISA SQL::Statement::Term
```

## METHODS

### new

Instantiates a new `"SQL::Statement::Function::SubString"` instance. Takes *$owner*, *$start*, *$length* and *\\@params* as arguments (in specified order).

Meaning of the parameters:

- *$start*

  Specifies the start position to extract the sub-string. This is expected to be a SQL::Statement::Term instance. The first character in a string has the position 1.

- *$length*

  Specifies the length of the extracted sub-string. This is expected to be a SQL::Statement::Term instance.

  If omitted, everything to the end of the string is returned.

- *\\@params*

  Expected to be an array with exact 1 element (more are not evaluated).

### value

Returns the extracted sub-string value from first parameter argument.

## NAME

SQL::Statement::Function::StrConcat - implements the built-in string concatenation

## SYNOPSIS

```
  # create an substr function term with an SQL::Statement object as owner
  # and \@params to concatenate
  my $term = SQL::Statement::StrConcat->new( $owner, \@params );
  # access the result of that operation
  $term->value( $eval );
```

## DESCRIPTION

SQL::Statement::Function::StrConcat implements a string concatenation term.

## INHERITANCE

```
  SQL::Statement::Function::StrConcat
  ISA SQL::Statement::Function
    ISA SQL::Statement::Term
```

## METHODS

### new

Instantiates a new `"SQL::Statement::Function::StrConcat"` instance.

### value

Returns the concatenated string composed of the parameter values.

## AUTHOR AND COPYRIGHT

Copyright (c) 2009-2020 by Jens Rehsack: rehsackATcpan.org

All rights reserved.

You may distribute this module under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
