Marcadores de parâmetro (Mecanismo de Banco de Dados)

Marcadores de parâmetro são suportados por bancos de dados APIs com base em ADO, OLE DB e ODBC. Um marcador de parâmetro é um ponto de interrogação (?) Coloque no local de uma expressão de entrada ou saída em uma instrução Transact-SQL. Os marcadores de parâmetro permitem que um aplicativo otimize o caso onde a mesma instrução Transact-SQL é executada várias vezes com valores diferentes para as expressões de entrada e saída.

Por exemplo, um usuário pode ter fornecido a um aplicativo cinco símbolos de ação diferentes, e o aplicativo tem que chamar um procedimento armazenado que obtenha os dados atuais para cada ação. O aplicativo poderia fazer o seguinte:

  • Preparar essa instrução Transact-SQL :

    EXEC GetQuoteProcedure @StockSymbolParameter = ?
    
  • Associar uma variável do aplicativo ao marcador do parâmetro (?).

  • Executar um loop:

    1. Mover o próximo símbolo de ação para a variável associada.

    2. Executar a instrução para recuperar a citação para aquela ação.

Os marcadores de parâmetro não estão limitados a serem mapeados para parâmetros de procedimento armazenado. Os marcadores de parâmetro podem ser usados em qualquer lugar que uma expressão de entrada seja usada, por exemplo:

UPDATE HumanResources.Employees
SET Title = ?
WHERE EmployeeID = ?

Os marcadores de parâmetro também podem ser usados para mapear os parâmetros de saída e procedimento armazenado, e retornar códigos. Quando o aplicativo executa um procedimento armazenado, o provedor OLE DB ou driver ODBC move os valores de dados de qualquer parâmetro de saída ou códigos de retorno para as variáveis associadas aos marcadores do parâmetro.

Por exemplo, um aplicativo pode executar o procedimento seguinte. Este procedimento retorna um código de retorno de número inteiro e um parâmetro de saída de caractere.

  1. Preparar uma instrução:

    {? = CALL MyProc (?)}
    
  2. Associe o primeiro marcador de parâmetro a uma variável inteira e o segundo marcador para uma matriz de caractere.

  3. Execute a instrução.

  4. Busque ou cancele todos os conjuntos de resultados retornados pelo procedimento armazenado.

Nesse ponto, o Microsoft Provedor OLE DB para SQL Server ou SQL Server o driver ODBC terá colocado o código de retorno e o valor do parâmetro de saída nas variáveis associadas. O Microsoft SQL Server retorna o parâmetro de saída e os valores do código de retorno do ultimo pacote ele retorna ao cliente. Portanto, o aplicativo deve processar ou cancelar todos os conjuntos de resultados retornados pelo procedimento armazenado antes de obter acesso ao código de retorno e valores de parâmetro de saída.

O ADO API tem uma variação neste processo por executar procedimentos armazenados. Um aplicativo ADO executa o seguinte:

  1. Define o tipo de objeto Command para adCmdStoredProc.

  2. Define o texto de comando para o nome do procedimento.

  3. Cria uma coleção Parameters associando todos os parâmetros e códigos de retorno às variáveis do aplicativo.

  4. Executa o objeto Command .

Os marcadores de parâmetro são associados com um objeto de banco de dados que tem um tipo de dados específico. Se o aplicativo associar um marcador de parâmetro à uma variável cujos tipos de dados diferem daqueles do objeto de banco de dados associados, o provedor OLE DB ou driver ODBC deve converter os dados. Por exemplo, se um aplicativo associar um código de retorno inteiro à uma matriz de caractere, o provedor OLE DB ou driver ODBC deve converter os dados do código de retorno inteiro para uma cadeia de caracteres. Para informações sobre conversões de tipos de dados aceitos, consulte a documentação do Provedor OLE DB para SQL Server e SQL Server driver ODBC.