dm_db_query Module

Basic SQL query builder.


Uses

  • module~~dm_db_query~~UsesGraph module~dm_db_query dm_db_query module~dm_db_stmt dm_db_stmt module~dm_db_query->module~dm_db_stmt module~dm_error dm_error module~dm_db_query->module~dm_error module~dm_kind dm_kind module~dm_db_query->module~dm_kind iso_c_binding iso_c_binding module~dm_db_stmt->iso_c_binding module~dm_error->module~dm_kind module~dm_ascii dm_ascii module~dm_error->module~dm_ascii iso_fortran_env iso_fortran_env module~dm_kind->iso_fortran_env

Used by

  • module~~dm_db_query~~UsedByGraph module~dm_db_query dm_db_query module~dm_db dm_db module~dm_db->module~dm_db_query module~dm_db_table dm_db_table module~dm_db_table->module~dm_db_query module~dm_db_table->module~dm_db module~dmpack dmpack module~dmpack->module~dm_db_query module~dmpack->module~dm_db module~dmpack->module~dm_db_table

Variables

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.


Derived Types

type, public ::  db_query_param_type

Database query parameter.

Components

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

Query parameter string.

type, public ::  db_query_type

Database query.

Components

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 parameter array size.

type(db_query_param_type), public :: params(DB_QUERY_NPARAMS)

Parameter array.


Functions

public function dm_db_query_build(db_query, base) result(sql)

Returns SQL string from query.

Arguments

Type IntentOptional Attributes Name
type(db_query_type), intent(inout) :: db_query

Database query type.

character(len=*), intent(in), optional :: base

Base query string.

Return Value character(len=:), allocatable

SQL string.


Subroutines

public subroutine dm_db_query_add_double(db_query, param, value, error)

Adds double precision parameter to query. Returns E_LIMIT in error if parameter limit has been reached.

Arguments

Type IntentOptional 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), optional :: value

Query parameter value.

integer, intent(out), optional :: error

Error code.

public subroutine dm_db_query_add_int(db_query, param, value, error)

Adds 32-bit integer parameter to query. Returns E_LIMIT if parameter limit has been reached.

Arguments

Type IntentOptional 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), optional :: value

Query parameter value.

integer, intent(out), optional :: error

Error code.

public subroutine dm_db_query_add_int64(db_query, param, value, error)

Adds 64-bit integer parameter to query. Returns E_LIMIT if parameter limit has been reached.

Arguments

Type IntentOptional 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), optional :: value

Query parameter value.

integer, intent(out), optional :: error

Error code.

public subroutine dm_db_query_add_text(db_query, param, value, empty, error)

Adds text parameter to 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..

Arguments

Type IntentOptional Attributes Name
type(db_query_type), intent(inout) :: db_query

Database query type.

character(len=*), intent(in) :: param

Query parameter.

character(len=*), intent(in), optional :: value

Query parameter value.

logical, intent(in), optional :: empty

Add empty string.

integer, intent(out), optional :: error

Error code.

public pure elemental subroutine dm_db_query_destroy(db_query)

Resets query.

Arguments

Type IntentOptional Attributes Name
type(db_query_type), intent(inout) :: db_query

Database query type.

public pure elemental subroutine dm_db_query_set_limit(db_query, limit)

Sets LIMIT clause of query.

Arguments

Type IntentOptional Attributes Name
type(db_query_type), intent(inout) :: db_query

Database query type.

integer(kind=i8), intent(in), optional :: limit

Limit value.

public pure elemental subroutine dm_db_query_set_order(db_query, by, desc)

Sets ORDER BY clause of query.

Arguments

Type IntentOptional 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.