OdbcCommand.CommandText 속성

정의

데이터 소스에 대해 실행할 SQL 문이나 저장 프로시저를 가져오거나 설정합니다.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

속성 값

실행할 SQL 문 또는 저장 프로시저입니다.The SQL statement or stored procedure to execute. 기본값은 빈 문자열("")입니다.The default value is an empty string ("").

설명

CommandType 속성이 StoredProcedure로 설정 된 경우 표준 ODBC 저장 프로시저 이스케이프 시퀀스를 사용 하 여 CommandText 속성을 설정 해야 합니다.When the CommandType property is set to StoredProcedure, the CommandText property should be set using standard ODBC stored procedure escape sequences. CommandText를 저장 프로시저의 이름으로 설정 하는 것은 다른 .NET Framework 데이터 공급자의 경우와 동일 하 게 작동 하지 않습니다.Setting the CommandText to the name of the stored procedure does not function as it does for other .NET Framework data providers.

외부 조인 및 스칼라 함수 호출과 같은 많은 언어 기능은 일반적으로 데이터 원본에 의해 구현 됩니다.Many language features, such as outer joins and scalar function calls, are generally implemented by data sources. 이러한 기능에 대 한 구문은 일반적으로 데이터 원본에만 해당 됩니다.Even the syntax for these features is generally data source-specific. 따라서 ODBC는 다음과 같은 언어 기능의 표준 구문을 포함 하는 이스케이프 시퀀스를 정의 합니다.Therefore, ODBC defines escape sequences that contain standard syntax for the following language features:

  • 날짜, 시간, 타임 스탬프 및 날짜/시간 간격 리터럴Date, time, timestamp, and datetime interval literals

  • 숫자, 문자열 및 데이터 형식 변환 함수와 같은 스칼라 함수Scalar functions such as numeric, string, and data type conversion functions

  • LIKE 조건자 이스케이프 문자LIKE predicate escape character

  • 외부 조인Outer joins

  • 프로시저 호출Procedure calls

ODBC에 사용 되는 이스케이프 시퀀스는 다음과 같습니다.The escape sequence used by ODBC is as follows:

{extension}  

이 이스케이프 시퀀스는 ODBC 드라이버에 의해 인식 되 고 구문 분석 됩니다.This escape sequence is recognized and parsed by ODBC drivers. 그런 다음 이스케이프 시퀀스를 데이터 소스 관련 문법으로 바꿉니다.They then replace any escape sequences with data source-specific grammar.

프로시저는 데이터 원본에 저장 된 실행 가능한 개체입니다.A procedure is an executable object stored at the data source. 일반적으로는 미리 컴파일된 하나 이상의 SQL 문입니다.Generally, it is one or more SQL statements that have been precompiled. 프로시저를 호출 하는 이스케이프 시퀀스는 다음과 같습니다.The escape sequence for calling a procedure is

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

여기서 procedure-name는 프로시저의 이름을 지정 하 고 parameter는 프로시저 매개 변수를 지정 합니다.where procedure-name specifies the name of a procedure and parameter specifies a procedure parameter.

이 명령은 Execute 메서드 중 하나 (예: ExecuteReader 또는 ExecuteNonQuery)를 호출할 때이 저장 프로시저를 실행 합니다.The command executes this stored procedure when you call one of the Execute methods (for example, ExecuteReader or ExecuteNonQuery).

현재 연결에서 실행 또는 인출 작업을 수행 하는 경우 Connection, CommandTypeCommandText 속성을 설정할 수 없습니다.You cannot set the Connection, CommandType and CommandText properties if the current connection is performing an execute or fetch operation.

ODBC.NET 공급자는 CommandTypeText으로 설정 된 경우 OdbcCommand에 의해 호출 되는 저장 프로시저 또는 SQL 문에 매개 변수를 전달 하는 명명 된 매개 변수를 지원 하지 않습니다.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. 이 경우 물음표 (?) 자리 표시자를 사용 해야 합니다.In this case, the question mark (?) placeholder must be used. 예:For example:

SELECT * FROM Customers WHERE CustomerID = ?  

따라서 OdbcParameter 개체가 OdbcParameterCollection에 추가 되는 순서는 매개 변수에 대 한 물음표 자리 표시자의 위치와 직접 일치 해야 합니다.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.

매개 변수에 null 값이 포함 된 경우 ODBC의 .NET Framework Data Provider는 여전히 해당 매개 변수를 바인딩하고, null 값 대신 SQL_DEFAULT_PARAM를 사용 하 여 정의 된 경우에는 기본 매개 변수를 사용 합니다.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. 예를 들어 OdbcParameterCollection는 다음과 같습니다.For example, the OdbcParameterCollection:

{1, null, 2}  

CommandText 속성으로 전달 됩니다.passed into the CommandText property:

{call sp(?, ?, ?)}  

.NET Framework Data Provider는 ODBC에 대 한 첫 번째 매개 변수를 값 1, 세 번째 매개 변수를 값 2에, 두 번째 매개 변수는 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. 그러나이 동작은 드라이버에 따라 달라 집니다.However, this behavior is driver-dependent. 드라이버가이 기능을 지원 하지 않는 경우 매개 변수의 값을 전달 하지 마십시오.If the driver does not support this functionality, just do not pass in a value for the parameter. 예를 들어 OdbcParameterCollection를 사용 합니다.For example, use the OdbcParameterCollection:

{1, 2}  

CommandText 속성을 다음과 같이 설정 합니다.and set the CommandText property to the following:

{call sp(?, null, ?)}  

참고

매개 변수를 생략 하는 경우에는 다른 매개 변수와 구분 하는 쉼표가 계속 표시 되어야 합니다.If a parameter is omitted, the comma delimiting it from other parameters must still appear. 입력 또는 입/출력 매개 변수를 생략 하면 프로시저는 매개 변수의 기본값을 사용 합니다.If an input or input/output parameter is omitted, the procedure uses the default value of the parameter. 입력 또는 입/출력 매개 변수의 기본값을 지정 하는 또 다른 방법은 매개 변수에 바인딩된 길이/표시기 버퍼의 값을 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.

적용 대상

추가 정보