Command Syntax

SQLOLEDB recognizes command syntax specified by the DBGUID_DBSQL macro. For SQLOLEDB, the specifier indicates that an amalgam of ODBC, ANSI, and SQL Server-specific Transact-SQL is valid syntax. For example, the following SQL statement uses an ODBC SQL escape sequence to specify the LCASE string function:

SELECT customerid={fn LCASE(CustomerID)} FROM Customers
  

LCASE returns a character string, converting all uppercase characters to their lowercase equivalents. The ANSI SQL string function LOWER performs the same operation, so the following SQL statement is an ANSI equivalent to the ODBC statement presented above:

SELECT customerid=LOWER(CustomerID) FROM Customers
  

SQLOLEDB successfully processes either form of the statement when specified as text for a command.

Stored Procedures

When executing an SQL Server stored procedure using an SQLOLEDB command, use the ODBC procedure call escape sequence in the command text. SQLOLEDB then uses the remote procedure call mechanism of SQL Server to optimize command processing. For example, the following ODBC SQL statement is preferred command text over the Transact-SQL form:

ODBC SQL

{call SalesByCategory('Produce', '1995')}
  

Transact-SQL

EXECUTE SalesByCategory 'Produce', '1995'