Question: So I got this table FOO which has a column of the type VARCHAR and is named COMMENT (which happens to be a reserved keyword).
When I am trying to use it in a CONCAT function in my select the result is NULL.

How can I fix this?

```
SELECT 
    CONCAT(CONCAT(CONCAT(CONCAT('{"NAME":"', NAME), '","COMMENT":"'), COMMENT),'"}')
FROM
    SOMESCHEMA.FOO

```

I also tried to use " or ' around `COMMENT`, but then it is interpreted as a VARCHAR...

2nd I used ` but that happens to print me the following error.

1. [Code: -104, SQL State: 42601] ILLEGAL SYMBOL "`". SOME SYMBOLS THAT MIGHT BE LEGAL ARE:.

I also tried to add the SCHEMA and the TABLE name in front of the column like:

```
CONCAT(CONCAT(CONCAT(CONCAT('{"NAME":"', NAME), '","COMMENT":"'), SOMESCHEMA.FOO.COMMENT),'"}')

```

But no luck.

Answer: 
`Employee emp;` is the declaration of the local variable `emp` of type `Employee`. No value is assigned at this point.

`Employee` is a class holding the properties of an employee like id, name, and date of birth. The O/R-mapper (EF or EF Core) automatically converts the records of the database into objects of this type.

Optionally the variable could be declared and initialized at the same place. The line `Employee emp;` must then be dropped and instead the query would look like this:

```
Employee emp = connection.QuerySingleOrDefault<Employee>(query, new { ID = id });
return View(emp);

```

The return statement must then be moved inside the `using` statement, because the scope of `emp` is now limited to the using block.

Alternatively, since now the compiler can infer the type from the initialization code (the code to the right of the `=`), you can use `var`:

```
var emp = connection.QuerySingleOrDefault<Employee>(query, new { ID = id });
return View(emp);

```

Note that `emp` is still strongly typed as `Employee`. Just that we let the compiler find this out instead of writing it down explicitly.

or you can drop the temporary variable altogether:

```
return View(connection.QuerySingleOrDefault<Employee>(query, new { ID = id }));

```

Note that the `using` statement is still doing its job of closing and disposing the connection before the method returns. This is the magic of C#.
Employee emp is initially not assigned any value.

When data is returned from Oracle database based on Id the value gets stored in emp.

Now, this emp is also the View Model for your controller method. The data returned from emp is pushed to View.

You must be having this value accessible from View file by using
@model Employee

@Model.[property Name]