다음을 통해 공유


UPDATETEXT(Transact-SQL)

기존의 text, ntext 또는 image 필드를 업데이트합니다. UPDATETEXT를 사용하여 text, ntext 또는 image 열의 일부만 변경할 수 있습니다. WRITETEXT를 사용하여 text, ntext 또는 image 필드 전체를 업데이트하고 바꿀 수 있습니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 큰 값 데이터 형식 및 UPDATE 문의 .WRITE 절을 사용합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

UPDATETEXT [BULK] { table_name.dest_column_name dest_text_ptr }
    { NULL | insert_offset }
     { NULL | delete_length }
     [ WITH LOG ]
     [ inserted_data
    | { table_name.src_column_name src_text_ptr } ]

인수

  • BULK
    이진 데이터 스트림을 업로드하기 위해 업로드 도구를 사용합니다. 스트림은 도구가 TDS 프로토콜 수준에서 제공해야 합니다. 데이터 스트림이 없으면 쿼리 프로세서는 BULK 옵션을 무시합니다.

    중요 정보중요

    BULK 옵션은 SQL Server 기반 응용 프로그램에서 사용하지 않는 것이 좋습니다. 이 옵션은 SQL Server 다음 버전에서 변경 또는 제거될 수 있습니다.

  • table_name**.**dest_column_name
    업데이트할 테이블 및 text, ntext 또는 image 열의 이름입니다. 테이블 이름 및 열 이름은 식별자 규칙을 따라야 합니다. 필요에 따라 데이터베이스 이름과 소유자 이름을 지정할 수 있습니다.

  • dest_text_ptr
    업데이트할 text, ntext 또는 image 데이터를 가리키는 텍스트 포인터 값(TEXTPTR 함수에서 반환된 값)입니다. dest_text_ptr은 binary(16)이어야 합니다.

  • insert_offset
    업데이트의 경우 0부터 시작하는 시작 위치입니다. text 또는 image 열의 경우 insert_offset은 새 데이터를 삽입하기 전에 기존 열의 시작점에서부터 건너뛰어야 하는 바이트 수입니다. ntext 열의 경우 insert_offset은 문자 수이며 각 ntext 문자는 2바이트를 사용합니다. 0부터 시작하는 시작 위치에 있는 기존의 text, ntext 또는 image 데이터는 새 데이터에 필요한 공간을 만들기 위해 오른쪽으로 옮겨집니다. 값이 0이면 기존 데이터의 시작점에 새 데이터를 삽입합니다. 값이 NULL이면 기존의 데이터 값에 데이터를 새로 추가합니다.

  • delete_length
    기존의 text, ntext 또는 image 열에서 삭제할 데이터의 길이로, insert_offset 위치부터 삭제됩니다. delete_length값은 text 및 image 열의 경우 바이트로 지정되며 ntext 열의 경우 문자로 지정됩니다. 각 ntext 문자는 2바이트를 사용합니다. 값이 0이면 데이터를 삭제하지 않습니다. 값이 NULL이면 insert_offset 위치에서 기존의 text 또는 image 열의 끝까지 데이터를 모두 삭제합니다.

  • WITH LOG
    로깅은 데이터베이스에 영향을 주는 복구 모델에 의해 결정됩니다.

  • inserted_data
    insert_offset 위치에서 기존의 text, ntext 또는 image 열에 삽입될 데이터로, 단일 char, nchar, varchar, nvarchar, binary, varbinary, text, ntext 또는 image 값입니다. inserted_data는 리터럴 또는 변수일 수 있습니다.

  • table_name.src_column_name
    삽입된 데이터 원본으로 사용되는 text, ntext 또는 image 열 이름과 테이블의 이름입니다. 테이블 이름과 열 이름은 식별자 규칙을 따라야 합니다.

  • src_text_ptr
    삽입된 데이터 원본으로 사용되는 text, ntext 또는 image 열을 가리키는 텍스트 포인터 값(TEXTPTR 함수에서 반환되는 값)입니다.

    [!참고]

    scr_text_ptr 값은 dest_text_ptr 값과 같을 수 없습니다.

주의

새로 삽입되는 데이터는 단일 inserted_data 상수, 테이블 이름, 열 이름 또는 텍스트 포인터일 수 있습니다.

업데이트 동작

UPDATETEXT 매개 변수

기존 데이터를 바꾸려면

Null이 아닌 insert_offset 값, 0이 아닌 delete_length 값 및 삽입할 새 데이터를 지정합니다.

기존 데이터를 삭제하려면

Null이 아닌 insert_offset 값과 0이 아닌 delete_length 값을 지정합니다. 삽입할 새 데이터를 지정하지 않습니다.

새 데이터를 삽입하려면

insert_offset 값, delete_length 값 0 및 삽입할 새 데이터를 지정합니다.

최고의 성능을 위해 text, ntext 및 image 데이터는 8,040바이트의 배수인 청크 크기로 삽입하거나 업데이트하는 것이 좋습니다.

SQL Server에서는 text, ntext 또는 image 데이터에 대한 행 내부 텍스트 포인터가 있어도 유효하지 않을 수 있습니다. text in row 옵션에 대한 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하십시오. 텍스트 포인터를 무효화하는 방법은 sp_invalidate_textptr(Transact-SQL)를 참조하십시오.

text 열을 NULL로 초기화하려는 경우 호환성 수준이 65이면 UPDATETEXT를 사용합니다. 호환성 수준이 70인 경우에는 WRITETEXT를 사용하여 텍스트 열을 NULL로 초기화합니다. 그렇지 않은 경우에는 UPDATETEXT가 text 열을 빈 문자열로 초기화합니다. 호환성 수준을 설정하는 방법은 sp_dbcmptlevel(Transact-SQL)을 참조하십시오.

사용 권한

지정된 테이블에 대해 UPDATE 권한이 필요합니다.

다음은 텍스트 포인터를 지역 변수인 @ptrval에 둔 다음 UPDATETEXT를 사용하여 맞춤법 오류를 업데이트하는 예입니다.

[!참고]

이 예를 실행하려면 pubs 데이터베이스를 설치해야 합니다. pubs 데이터베이스를 설치하는 방법은 Northwind 및 pubs 예제 데이터베이스 다운로드를 참조하십시오.

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr, publishers p
      WHERE p.pub_id = pr.pub_id 
      AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO