title | description | author | ms.author | ms.date | ms.service | ms.subservice | ms.topic | helpviewer_keywords | |||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructing a SQL Statement (ODBC) |
Learn how the SQL Server Client ODBC driver deals with SQL statements, parsing some into Transact-SQL statements and passing others to the database unchanged. |
markingmyname |
maghan |
03/14/2017 |
sql |
native-client |
reference |
|
[!INCLUDESQL Server Azure SQL Database Synapse Analytics PDW]
ODBC applications perform almost all of their database access by executing [!INCLUDEtsql] statements. The form of these statements depends on the application requirements. SQL statements can be constructed in the following ways:
-
Hard-coded
Static statements performed by an application as a fixed task.
-
Constructed at run time
SQL statements constructed at run time that enable the user to tailor the statement by using common clauses, such as SELECT, WHERE, and ORDER BY. This includes ad hoc queries entered by users.
The [!INCLUDEssNoVersion] Client ODBC driver parses SQL statements only for ODBC and ISO syntax not directly supported by the [!INCLUDEssDE], which the driver transforms into [!INCLUDEtsql]. All other SQL syntax is passed to the [!INCLUDEssDE] unchanged, where [!INCLUDEssNoVersion] will determine if it is valid [!INCLUDEssNoVersion]. This approach yields two benefits:
-
Reduced overhead
Processing overhead for the driver is minimized because it only has to scan for a small set of ODBC and ISO clauses.
-
Flexibility
Programmers can tailor the portability of their applications. To enhance portability against multiple databases, use primarily ODBC and ISO syntax. To use enhancements specific to [!INCLUDEssNoVersion], use the appropriate [!INCLUDEtsql] syntax. The [!INCLUDEssNoVersion] Native Client ODBC driver supports the complete [!INCLUDEtsql] syntax so ODBC-based applications can take advantage of all the features in [!INCLUDEssNoVersion].
The column list in a SELECT statement should contain only the columns required to perform the current task. Not only does this reduce the amount of data sent across the network, but also it reduces the effect of database changes on the application. If an application does not reference a column from a table, then the application is not affected by any changes made to that column.