ALTER PROCEDURE

기존 저장 프로시저의 속성을 수정합니다. 여기서 지원되지 않는 변경 작업을 해야 할 경우에는 DROP PROCEDURE 를 대신 사용한 다음 저장 프로시저를 다시 만드십시오.

참고 항목:

CREATE PROCEDURE , DROP PROCEDURE , SHOW PROCEDURES , DESCRIBE PROCEDURE

구문

ALTER PROCEDURE의 구문은 UDF 핸들러로 사용하는 언어에 따라 다릅니다.

Java 핸들러

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

JavaScript 핸들러

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Python 핸들러

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Scala 핸들러

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Snowflake Scripting 핸들러

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

매개 변수

name

변경할 저장 프로시저의 식별자를 지정합니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

arg_data_type [ , ... ]

인자가 있는 경우 저장 프로시저에 대한 인자의 데이터 타입을 지정합니다. 저장 프로시저는 이름 오버로딩(즉, 같은 스키마에 있는 두 저장 프로시저의 이름이 같을 수 있음)을 지원하고 인자 유형을 사용해 변경하려는 프로시저를 식별하므로 인자 유형이 필수적입니다.

RENAME TO new_name

저장 프로시저에 대해 새 식별자를 지정하는데, 식별자와 기존 인자 데이터 타입의 조합은 스키마에 대해 고유해야 합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적으로 오브젝트의 이름을 바꾸는 동안 오브젝트를 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 그러려면 각각 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된 new_name 값을 지정하십시오.

참고

  • 대상 데이터베이스 및/또는 스키마가 이미 있어야 합니다. 또한, 새 위치에 이름이 같은 오브젝트가 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.

  • 오브젝트 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한이 있는 역할) 역시 대상 스키마를 소유하지 않는 한 오브젝트를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.

오브젝트의 이름이 바뀌면 그 오브젝트를 참조하는 다른 오브젝트도 새 이름으로 업데이트해야 합니다.

SET ...

저장 프로시저에 대해 설정할 속성을 지정합니다.

COMMENT = 'string_literal'

저장 프로시저에 대한 설명을 추가하거나 기존 설명을 덮어씁니다. 지정한 값은 SHOW PROCEDURES 에 대한 출력의 DESCRIPTION 열에 표시됩니다.

LOG_LEVEL = 'log_level'

수집하여 활성 이벤트 테이블에서 사용 가능하도록 해야 하는 메시지의 심각도 수준을 지정합니다. 지정된 수준과 더 심각한 수준의 메시지가 수집됩니다.

수준에 대한 자세한 내용은 LOG_LEVEL 섹션을 참조하십시오. 로그 수준 설정에 대한 자세한 내용은 로깅, 메트릭 및 추적을 위한 수준 설정하기 섹션을 참조하십시오.

TRACE_LEVEL = 'trace_level'

추적 이벤트가 이벤트 테이블에 수집되는 방식을 제어합니다.

수준에 대한 자세한 내용은 TRACE_LEVEL 섹션을 참조하십시오. 추적 수준 설정에 대한 자세한 내용은 로깅, 메트릭 및 추적을 위한 수준 설정하기 섹션을 참조하십시오.

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

이 프로시저의 처리기 코드가 외부 네트워크에 액세스하려면 필요한 외부 액세스 통합 의 이름입니다.

외부 액세스 통합에는 처리기 코드가 외부 네트워크(예: 외부REST API)를 요청하는 데 필요한 외부 위치와 자격 증명(있는 경우)을 지정하는 네트워크 규칙시크릿 이 포함됩니다.

자세한 내용은 외부 네트워크 액세스 개요 섹션을 참조하십시오.

SECRETS = ( 'secret_variable_name' = secret_name [ , ...  ] )

처리기 코드의 시크릿에서 정보를 검색할 때 변수를 사용하여 시크릿을 참조할 수 있도록 시크릿 이름을 변수에 할당합니다.

이 매개 변수의 값은 다음 부분을 포함한 할당 식의 목록입니다.

  • 외부 액세스 통합의 ALLOWED_AUTHENTICATION_SECRETS 매개 변수 값에 지정된 시크릿의 이름인 secret_name. 결국, 해당 외부 액세스 통합의 이름은 이 CREATE PROCEDURE 호출의 EXTERNAL_ACCESS_INTEGRATIONS 매개 변수 값으로 지정해야 합니다.

    EXTERNAL_ACCESS_INTEGRATIONS 매개 변수로 지정된 통합에도 시크릿이 포함되지 않은 SECRETS 값을 지정하면 오류가 발생합니다.

  • 시크릿에서 정보를 검색할 때 처리기 코드에서 사용할 변수인 'secret_variable_name'.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

태그 이름과 태그 문자열 값을 지정합니다.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.

문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.

UNSET ...

저장 프로시저에 대해 설정 해제할 속성을 지정하여 기본값으로 재설정합니다.

현재, 설정 해제할 수 있는 속성은 다음 속성뿐입니다.

  • 프로시저에 대한 설명(있는 경우)을 제거하는 COMMENT.

  • TAG tag_name [ , tag_name ... ]

EXECUTE AS { CALLER | OWNER }

저장 프로시저는 소유자의 권한(“소유자의 권한” 저장 프로시저) 또는 호출자의 권한(“호출자의 권한” 저장 프로시저)으로 실행할 수 있습니다. ALTER PROCEDURE … EXECUTE AS CALLER 문을 실행하면 나중에 프로시저가 호출될 때 호출자의 권한 프로시저로 실행됩니다. ALTER PROCEDURE … EXECUTE AS OWNER 문을 실행하면 나중에 프로시저가 소유자의 권한 프로시저로 실행됩니다.

사용법 노트

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

저장 프로시저의 이름을 procedure1 에서 procedure2 로 바꾸기:

ALTER PROCEDURE IF EXISTS procedure1(FLOAT) RENAME TO procedure2;
Copy