# SQL Eval Function Arithmetic Expressions

## Definition

An arithmetic expression is an expression that results in a numeric value. Try these examples to see how easy it is to resolve an arithmetic expression.

Eval SQL.NET is a complete C# runtime compiler which honor operator precedence and parenthesis.

### Using formula & variables

```DECLARE @x INT = 2
DECLARE @y INT = 4
DECLARE @z INT = 6

DECLARE @result INT

SET @result = SQLNET::New('x*y+z')
.ValueInt('x', @x)
.ValueInt('y', @y)
.ValueInt('z', @z)
.EvalInt()

-- SELECT 14
SELECT  @result as Result
```

### Using formula & table variables

```DECLARE @table TABLE ( X INT, Y INT, Z INT )

INSERT  INTO @table
VALUES  ( 2, 4, 6 ),
( 3, 5, 7 ),
( 4, 6, 8 )

-- 14
-- 22
-- 32
DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z')
SELECT  @sqlnet.ValueInt('x', X)
.ValueInt('y', Y)
.ValueInt('z', Z)
.EvalInt() as Result
FROM    @table
```

### Using table formula & variables

```DECLARE @table TABLE
(
Formula VARCHAR(50) ,
X INT ,
Y INT ,
Z INT
)

INSERT  INTO @table
VALUES  ( 'x*y+z', 2, 4, 6 ),
( 'x+y*z', 2, 4, 6 ),
( '(x+y)*z', 2, 4, 6 )

-- 14
-- 26
-- 36
DECLARE @sqlnet SQLNET = SQLNET::New('')
SELECT  @sqlnet.Code(Formula)
.ValueInt('x', X)
.ValueInt('y', Y)
.ValueInt('z', Z).EvalInt() as Result
FROM    @table
```