--- title: "Level 1 Interface Conformance | Microsoft Docs" ms.custom: "" ms.date: "01/19/2017" ms.prod: sql ms.prod_service: connectivity ms.reviewer: "" ms.technology: connectivity ms.topic: conceptual helpviewer_keywords: - "interface conformance levels [ODBC]" - "conformance levels [ODBC], interface" - "level 1 interface conformance levels [ODBC]" ms.assetid: ee3f5c08-0583-4f3b-8354-ef71b6086a7e author: David-Engel ms.author: v-daenge --- # Level 1 Interface Conformance The Level 1 interface conformance level includes the Core interface conformance level functionality plus additional features, such as transactions, that are usually available in an OLTP relational DBMS. A Level 1 interface-conformant driver lets the application do the following, in addition to the features in the Core interface conformance level: ||| |-|-| |101|Specify the schema of database tables and views (using two-part naming). (For more information, see the three-part naming feature 201 in [Level 2 Interface Conformance](../../../odbc/reference/develop-app/level-2-interface-conformance.md).)| |102|Invoke true asynchronous execution of ODBC functions, where applicable ODBC functions are all synchronous or all asynchronous on a given connection.| |103|Use scrollable cursors, and thereby achieve access to a result set in methods other than forward-only, by calling **SQLFetchScroll** with the *FetchOrientation* argument other than SQL_FETCH_NEXT. (The SQL_FETCH_BOOKMARK *FetchOrientation* is in feature 204 in [Level 2 Interface Conformance](../../../odbc/reference/develop-app/level-2-interface-conformance.md).)| |104|Obtain primary keys of tables, by calling **SQLPrimaryKeys**.| |105|Use stored procedures, through the ODBC escape sequence for procedure calls, and query the data dictionary regarding stored procedures, by calling **SQLProcedureColumns** and **SQLProcedures**. (The process by which procedures are created and stored on the data source is outside the scope of this document.)| |106|Connect to a data source by interactively browsing the available servers, by calling **SQLBrowseConnect**.| |107|Use ODBC functions instead of SQL statements to perform certain database operations: **SQLSetPos** with SQL_POSITION and SQL_REFRESH.| |108|Gain access to the contents of multiple result sets generated by batches and stored procedures, by calling **SQLMoreResults**.| |109|Delimit transactions spanning several ODBC functions, with true atomicity and the ability to specify SQL_ROLLBACK in **SQLEndTran**.|