Compartilhar via


OdbcCommand.CommandText Propriedade

Definição

Obtém ou define a instrução SQL ou o procedimento armazenado a ser executado em relação à fonte de dados.

public:
 virtual property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public:
 property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public override string CommandText { get; set; }
public string CommandText { get; set; }
member this.CommandText : string with get, set
Public Overrides Property CommandText As String
Public Property CommandText As String

Valor da propriedade

A instrução SQL ou o procedimento armazenado a ser executado. O valor padrão é uma cadeia de caracteres vazia ("").

Implementações

Comentários

Quando a CommandType propriedade é definida como StoredProcedure, a CommandText propriedade deve ser definida usando sequências de escape de procedimento armazenado ODBC padrão. Definir o CommandText como o nome do procedimento armazenado não funciona como funciona para outros provedores de dados .NET Framework.

Muitos recursos de linguagem, como junções externas e chamadas de função escalar, geralmente são implementados por fontes de dados. Até mesmo a sintaxe desses recursos geralmente é específica da fonte de dados. Portanto, o ODBC define sequências de escape que contêm sintaxe padrão para os seguintes recursos de linguagem:

  • Literais de intervalo de data, hora, carimbo de data e hora

  • Funções escalares, como funções de conversão numéricas, de cadeia de caracteres e de tipo de dados

  • Caractere de escape de predicado LIKE

  • Junções externas

  • Chamadas de procedimento

A sequência de escape usada pelo ODBC é a seguinte:

{extension}  

Essa sequência de escape é reconhecida e analisada por drivers ODBC. Em seguida, eles substituem todas as sequências de escape pela gramática específica da fonte de dados.

Um procedimento é um objeto executável armazenado na fonte de dados. Em geral, é uma ou mais instruções SQL que foram pré-compiladas. A sequência de escape para chamar um procedimento é

{[?=]call procedure-name[([parameter][,[parameter]]...)]}  

em que procedure-name especifica o nome de um procedimento e parameter especifica um parâmetro de procedimento.

O comando executa esse procedimento armazenado quando você chama um dos métodos Execute (por exemplo, ExecuteReader ou ExecuteNonQuery).

Você não poderá definir as Connectionpropriedades e CommandTypeCommandText se a conexão atual estiver executando uma operação de execução ou busca.

O provedor de ODBC.NET não dá suporte a parâmetros nomeados para passar parâmetros para uma instrução SQL ou um procedimento armazenado chamado por um OdbcCommand quando CommandType é definido Textcomo . Nesse caso, o espaço reservado do ponto de interrogação (?) deve ser usado. Por exemplo:

SELECT * FROM Customers WHERE CustomerID = ?  

Portanto, a ordem na qual OdbcParameter os objetos são adicionados ao OdbcParameterCollection deve corresponder diretamente à posição do espaço reservado do ponto de interrogação para o parâmetro .

Se um parâmetro contiver um valor nulo, o provedor de dados .NET Framework para ODBC ainda associará esse parâmetro, mas usará um parâmetro padrão, se tiver sido definido usando SQL_DEFAULT_PARAM, em vez do valor nulo. Por exemplo, o OdbcParameterCollection:

{1, null, 2}  

passado para a CommandText propriedade :

{call sp(?, ?, ?)}  

faz com que o provedor de dados .NET Framework para ODBC vincule o primeiro parâmetro ao valor 1, o terceiro parâmetro ao valor 2 e o segundo parâmetro como SQL_DEFAULT_PARAM. No entanto, esse comportamento depende do driver. Se o driver não der suporte a essa funcionalidade, simplesmente não passe um valor para o parâmetro . Por exemplo, use o OdbcParameterCollection:

{1, 2}  

e defina a CommandText propriedade para o seguinte:

{call sp(?, null, ?)}  

Observação

Se um parâmetro for omitido, a vírgula que o delimita de outros parâmetros ainda deverá aparecer. Se um parâmetro de entrada ou entrada/saída for omitido, o procedimento usará o valor padrão do parâmetro. Outra maneira de especificar o valor padrão de um parâmetro de entrada ou entrada/saída é definir o valor do buffer de comprimento/indicador associado ao parâmetro como SQL_DEFAULT_PARAM.

Aplica-se a

Confira também