Basic SQL query builder.
Make sure to not add more than DB_QUERY_NPARAMS
parameters to a query
or increase the parameter first.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | DB_QUERY_TYPE_NONE | = | 0 |
No type (invalid). |
integer, | public, | parameter | :: | DB_QUERY_TYPE_DOUBLE | = | 1 |
SQLite double precision. |
integer, | public, | parameter | :: | DB_QUERY_TYPE_INT | = | 2 |
SQLite 32-bit integer. |
integer, | public, | parameter | :: | DB_QUERY_TYPE_INT64 | = | 3 |
SQLite 64-bit integer. |
integer, | public, | parameter | :: | DB_QUERY_TYPE_TEXT | = | 4 |
SQLite text. |
Generic subroutine to add SET values to UPDATE query. The procedures do not validate that values have been added only once.
Adds double precision SET parameter to query. Returns E_LIMIT
in
error
if parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | column |
Column name. |
||
real(kind=r8), | intent(in) | :: | value |
New column value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds 32-bit integer SET parameter to query. Returns E_LIMIT
if
parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | column |
Column name. |
||
integer(kind=i4), | intent(in) | :: | value |
New column value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds 64-bit integer SET parameter to query. Returns E_LIMIT
if
parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | column |
Column name. |
||
integer(kind=i8), | intent(in) | :: | value |
New column value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds text parameter to SET query. Returns E_LIMIT
if parameter
limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | column |
Column name. |
||
character(len=*), | intent(in) | :: | value |
New column value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Generic subroutine to add WHERE values to query. The procedures do not validate that values have been added only once.
Adds double precision WHERE parameter to query. Returns E_LIMIT
in
error
if parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | param |
Query parameter. |
||
real(kind=r8), | intent(in) | :: | value |
Query parameter value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds 32-bit integer WHERE parameter to query. Returns E_LIMIT
if
parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | param |
Query parameter. |
||
integer(kind=i4), | intent(in) | :: | value |
Query parameter value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds 64-bit integer WHERE parameter to query. Returns E_LIMIT
if
parameter limit has been reached.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | param |
Query parameter. |
||
integer(kind=i8), | intent(in) | :: | value |
Query parameter value. |
||
integer, | intent(out), | optional | :: | error |
Error code. |
Adds text parameter to WHERE query. Returns E_LIMIT
if parameter
limit has been reached. Empty strings and strings containing only
white-space characters are ignored, unless argument empty
is set
to .true.
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | param |
Query parameter. |
||
character(len=*), | intent(in) | :: | value |
Query parameter value. |
||
logical, | intent(in), | optional | :: | empty |
Add empty string. |
|
integer, | intent(out), | optional | :: | error |
Error code. |
Single WHERE or SET parameter of database query.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | type | = | DB_QUERY_TYPE_NONE |
Value type. |
|
real(kind=r8), | public | :: | value_double | = | 0.0_r8 |
Double value. |
|
integer, | public | :: | value_int | = | 0 |
Integer value. |
|
integer(kind=i8), | public | :: | value_int64 | = | 0.0_i8 |
64-bit integer value. |
|
character(len=:), | public, | allocatable | :: | value_text |
Text value. |
||
character(len=:), | public, | allocatable | :: | sql |
WHERE clause or column name. |
Database query with SET values (for SQL UPDATE), WHERE parameters, LIMIT, and ORDER BY. Do not modify this derived type directly!
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | order_by |
ORDER BY clause. |
||
logical, | public | :: | order_desc | = | .false. |
ASC or DESC order. |
|
integer(kind=i8), | public | :: | limit | = | 0_i8 |
Row limit. |
|
integer, | public | :: | nparams | = | 0 |
Current WHERE parameter array size. |
|
integer, | public | :: | nupdates | = | 0 |
Current SET parameter array size. |
|
type(db_query_param_type), | public | :: | params(DB_QUERY_NPARAMS) |
WHERE parameter array. |
|||
type(db_query_param_type), | public | :: | updates(DB_QUERY_NPARAMS) |
SET parameter array. |
Returns SQL string from query.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in), | optional | :: | base |
Base query string. |
SQL string.
Resets query.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
Sets LIMIT
clause of query.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
integer(kind=i8), | intent(in), | optional | :: | limit |
Limit value. |
Sets ORDER BY
clause of query.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(db_query_type), | intent(inout) | :: | db_query |
Database query type. |
||
character(len=*), | intent(in) | :: | by |
Field name. |
||
logical, | intent(in), | optional | :: | desc |
Descending order. |