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.Gets or sets the SQL statement or stored procedure to execute against the data source.

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

Valor da propriedade

A instrução SQL ou o procedimento armazenado a ser executado.The SQL statement or stored procedure to execute. O valor padrão é uma cadeia de caracteres vazia ("").The default value is an empty string ("").

Comentários

Quando a propriedade CommandType é definida como StoredProcedure, a propriedade CommandText deve ser definida usando sequências de escape de procedimento armazenado ODBC padrão.When the CommandType property is set to StoredProcedure, the CommandText property should be set using standard ODBC stored procedure escape sequences. Definir o CommandText como o nome do procedimento armazenado não funciona como faz para outros provedores de dados de .NET Framework.Setting the CommandText to the name of the stored procedure does not function as it does for other .NET Framework data providers.

Muitos recursos de linguagem, como junções externas e chamadas de função escalar, geralmente são implementados por fontes de dados.Many language features, such as outer joins and scalar function calls, are generally implemented by data sources. Até mesmo a sintaxe para esses recursos geralmente é específica da fonte de dados.Even the syntax for these features is generally data source-specific. Portanto, o ODBC define as sequências de escape que contêm a sintaxe padrão para os seguintes recursos de idioma:Therefore, ODBC defines escape sequences that contain standard syntax for the following language features:

  • Literais data, time, timestamp e DateTime IntervalDate, time, timestamp, and datetime interval literals

  • Funções escalares, como funções numéricas, de cadeia de caracteres e de conversão de tipo de dadosScalar functions such as numeric, string, and data type conversion functions

  • Caractere de escape de predicado LIKELIKE predicate escape character

  • Junções externasOuter joins

  • Chamadas de procedimentoProcedure calls

A sequência de escape usada pelo ODBC é a seguinte:The escape sequence used by ODBC is as follows:

{extension}  

Essa sequência de escape é reconhecida e analisada por drivers ODBC.This escape sequence is recognized and parsed by ODBC drivers. Em seguida, eles substituem qualquer sequência de escape com a gramática específica da fonte de dados.They then replace any escape sequences with data source-specific grammar.

Um procedimento é um objeto executável armazenado na fonte de dados.A procedure is an executable object stored at the data source. Geralmente, é uma ou mais instruções SQL que foram pré-compiladas.Generally, it is one or more SQL statements that have been precompiled. A sequência de escape para chamar um procedimento éThe escape sequence for calling a procedure is

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

em que procedure-name especifica o nome de um procedimento e parameter especifica um parâmetro de procedimento.where procedure-name specifies the name of a procedure and parameter specifies a procedure parameter.

O comando executa esse procedimento armazenado quando você chama um dos métodos Execute (por exemplo, ExecuteReader ou ExecuteNonQuery).The command executes this stored procedure when you call one of the Execute methods (for example, ExecuteReader or ExecuteNonQuery).

Você não pode definir as propriedades Connection, CommandType e CommandText se a conexão atual estiver executando uma operação executar ou buscar.You cannot set the Connection, CommandType and CommandText properties if the current connection is performing an execute or fetch operation.

O provedor 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 está definido como Text.The ODBC.NET Provider does not support named parameters for passing parameters to an SQL statement or a stored procedure called by an OdbcCommand when CommandType is set to Text. Nesse caso, o espaço reservado de ponto de interrogação (?) deve ser usado.In this case, the question mark (?) placeholder must be used. Por exemplo:For example:

SELECT * FROM Customers WHERE CustomerID = ?  

Portanto, a ordem na qual os objetos de OdbcParameter são adicionados ao OdbcParameterCollection deve corresponder diretamente à posição do espaço reservado de ponto de interrogação para o parâmetro.Therefore, the order in which OdbcParameter objects are added to the OdbcParameterCollection must directly correspond to the position of the question mark placeholder for the parameter.

Se um parâmetro contiver um valor nulo, o .NET Framework Provedor de Dados para ODBC ainda associará esse parâmetro, mas usará um parâmetro padrão, se um tiver sido definido usando SQL_DEFAULT_PARAM, em vez do valor nulo.If a parameter contains a null value, the .NET Framework Data Provider for ODBC still binds that parameter, but uses a default parameter, if one has been defined by using SQL_DEFAULT_PARAM, instead of the null value. Por exemplo, o OdbcParameterCollection:For example, the OdbcParameterCollection:

{1, null, 2}  

passado para a propriedade CommandText:passed into the CommandText property:

{call sp(?, ?, ?)}  

faz com que o .NET Framework Provedor de Dados para ODBC associando o primeiro parâmetro ao valor 1, o terceiro parâmetro ao valor 2 e o segundo parâmetro como SQL_DEFAULT_PARAM.causes the .NET Framework Data Provider for ODBC binding the first parameter to the value 1, the third parameter to the value 2, and the second parameter as SQL_DEFAULT_PARAM. No entanto, esse comportamento é dependente de driver.However, this behavior is driver-dependent. Se o driver não oferecer suporte a essa funcionalidade, simplesmente não passe um valor para o parâmetro.If the driver does not support this functionality, just do not pass in a value for the parameter. Por exemplo, use o OdbcParameterCollection:For example, use the OdbcParameterCollection:

{1, 2}  

e defina a propriedade CommandText como o seguinte:and set the CommandText property to the following:

{call sp(?, null, ?)}  

Observação

Se um parâmetro for omitido, a vírgula delimitadora de outros parâmetros ainda deverá aparecer.If a parameter is omitted, the comma delimiting it from other parameters must still appear. Se um parâmetro de entrada ou entrada/saída for omitido, o procedimento usará o valor padrão do parâmetro.If an input or input/output parameter is omitted, the procedure uses the default value of the parameter. Outra maneira de especificar o valor padrão de um parâmetro de entrada ou de entrada/saída é definir o valor do buffer de comprimento/indicador associado ao parâmetro para SQL_DEFAULT_PARAM.Another way to specify the default value of an input or input/output parameter is to set the value of the length/indicator buffer bound to the parameter to SQL_DEFAULT_PARAM.

Aplica-se a

Veja também