Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os parâmetros nas chamadas de procedimento podem ser parâmetros de entrada, entrada/saída ou de saída. Isto é diferente dos parâmetros em todas as outras instruções SQL, que são sempre parâmetros de entrada.
Os parâmetros de entrada são usados para enviar valores ao procedimento. Por exemplo, suponha que a tabela de Peças tem as colunas PartID, Description e Price. O procedimento InsertPart pode ter um parâmetro de entrada para cada coluna da tabela. Por exemplo:
{call InsertPart(?, ?, ?)}
Um driver não deve modificar o conteúdo de um buffer de entrada até que o SQLExecDirect ou SQLExecute retorne SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE ou SQL_NO_DATA. O conteúdo do buffer de entrada não deve ser modificado enquanto o SQLExecDirect ou SQLExecute devolvem SQL_NEED_DATA ou SQL_STILL_EXECUTING.
Os parâmetros de entrada/saída são usados tanto para enviar valores para procedimentos como para recuperar valores dos procedimentos. Usar o mesmo parâmetro como parâmetro de entrada e de saída tende a ser confuso e deve ser evitado. Por exemplo, suponha que um procedimento aceita um ID de encomenda e devolve o ID do cliente. Isto pode ser definido com um único parâmetro de entrada/saída:
{call GetCustID(?)}
Pode ser melhor usar dois parâmetros: um parâmetro de entrada para o ID da ordem e um parâmetro de saída ou entrada/saída para o ID do cliente:
{call GetCustID(?, ?)}
Os parâmetros de saída são usados para recuperar o valor de retorno do procedimento e para obter valores dos argumentos do procedimento; Os procedimentos que devolvem valores são por vezes conhecidos como funções. Por exemplo, suponha que o procedimento GetCustID mencionado devolve um valor que indica se conseguiu encontrar a ordem. Na chamada seguinte, o primeiro parâmetro é um parâmetro de saída usado para recuperar o valor de retorno do procedimento, o segundo parâmetro é um parâmetro de entrada usado para especificar o ID da ordem, e o terceiro parâmetro é um parâmetro de saída usado para recuperar o ID do cliente:
{? = call GetCustID(?, ?)}
Os drivers tratam valores para os parâmetros de entrada e entrada/saída em procedimentos de forma semelhante aos parâmetros de entrada noutras instruções SQL. Quando a instrução é executada, recuperam os valores das variáveis ligadas a esses parâmetros e enviam-nos para a fonte de dados.
Depois de a instrução ser executada, os drivers armazenam os valores retornados dos parâmetros de entrada/saída e saída nas variáveis associadas a esses parâmetros. Estes valores devolvidos não têm garantia de serem definidos até que todos os resultados devolvidos pelo procedimento tenham sido obtidos e o SQLMoreResults tenha devolvido SQL_NO_DATA. Se a execução da instrução resultar num erro, o conteúdo do buffer de parâmetros de entrada/saída ou do buffer de parâmetros de saída fica indefinido.
Uma aplicação chama SQLProcedure para determinar se um procedimento tem um valor de retorno. Chama SQLProcedureColumns para determinar o tipo (valor de retorno, entrada, entrada/saída ou saída) de cada parâmetro de procedimento.