  We present an extension of the declarative programming language Curry to
support the access to data stored in relational databases via SQL. Since Curry
is statically typed, our emphasis on this SQL integration is on type safety.
Our extension respects the type system of Curry so that run-time errors due to
ill-typed data are avoided. This is obtained by preprocessing SQL statements at
compile time and translating them into type-safe database access operations. As
a consequence, the type checker of the Curry system can spot type errors in SQL
statements at compile time. To generate appropriately typed access operations,
the preprocessor uses an entity-relationship (ER) model describing the
structure of the relational data. In addition to standard SQL, SQL statements
embedded in Curry can include program expressions and also relationships
specified in the ER model. The latter feature is useful to avoid the
error-prone use of foreign keys. As a result, our SQL integration supports a
high-level and type-safe access to databases in Curry programs.
