Share via


Marcadores de parâmetro de associação

O aplicativo vincula parâmetros chamando SQLBindParameter. SQLBindParameter vincula um parâmetro por vez. Com ele, o aplicativo especifica o seguinte:

  • O número do parâmetro. Os parâmetros são numerados em ordem crescente de parâmetros na instrução SQL, começando com o número 1. Embora seja legal especificar um número de parâmetro maior que o número de parâmetros na instrução SQL, o valor do parâmetro será ignorado quando a instrução for executada.

  • O tipo de parâmetro (entrada, entrada/saída ou saída). Com exceção dos parâmetros em chamadas de procedimento, todos os parâmetros são parâmetros de entrada. Para obter mais informações, veja Parâmetros de procedimento posteriormente nesta seção.

  • O tipo de dados C, o endereço e o comprimento do byte do limite variável ao parâmetro. O driver deve ser capaz de converter os dados do tipo de dados C para o tipo de dados SQL ou um erro é retornado. Para obter uma lista de conversões com suporte, veja Convertendo dados de C em tipos de dados SQL no Apêndice D: Tipos de dados.

  • O tipo de dados SQL, a precisão e a escala do próprio parâmetro.

  • O endereço de um buffer de comprimento/indicador. Ele fornece o comprimento do byte de dados binários ou de caracteres, especifica que os dados são NULL ou especifica que os dados serão enviados com SQLPutData. Para obter mais informações, vejaUsando valores de comprimento/indicador.

Por exemplo, o código a seguir vincula SalesPerson e CustID aos parâmetros das colunas SalesPerson e CustID. Como SalesPerson contém dados de caracteres, que são de comprimento da variável, o código especifica o comprimento do byte de SalesPerson (11) e vincula SalesPersonLenOrInd para conter o comprimento do byte dos dados em SalesPerson. Essas informações não são necessárias para CustID porque contêm dados inteiros, que são de comprimento fixo.

SQLCHAR       SalesPerson[11];  
SQLINTEGER    SalesPersonLenOrInd, CustIDInd;  
SQLUINTEGER   CustID;  
  
// Bind SalesPerson to the parameter for the SalesPerson column and  
// CustID to the parameter for the CustID column.  
SQLBindParameter(hstmt1, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0,  
                  SalesPerson, sizeof(SalesPerson), &SalesPersonLenOrInd);  
SQLBindParameter(hstmt1, 2, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 10, 0,  
                  &CustID, 0, &CustIDInd);  
  
// Set values of salesperson and customer ID and length/indicators.  
strcpy_s((char*)SalesPerson, _countof(SalesPerson), "Garcia");  
SalesPersonLenOrInd = SQL_NTS;  
CustID = 1331;  
CustIDInd = 0;  
  
// Execute a statement to get data for all orders made to the specified  
// customer by the specified salesperson.  
SQLExecDirect(hstmt1,"SELECT * FROM Orders WHERE SalesPerson=? AND CustID=?",SQL_NTS);  

Quando SQLBindParameter é chamado, o driver armazena essas informações na estrutura da instrução. Quando a instrução é executada, ela usa as informações para recuperar os dados do parâmetro e enviá-los para a fonte de dados.

Observação

No ODBC 1.0, os parâmetros foram vinculados ao SQLSetParam. O Gerenciador de Driver mapeia chamadas entre SQLSetParam e SQLBindParameter, dependendo das versões do ODBC usadas pelo aplicativo e pelo driver.