SHOW PROCEDURES

SHOW PROCEDURES

접근 권한이 있는 모든 저장 프로시저(내장형과 사용자 정의형 프로시저 포함)의 목록을 보여 주는 명령이에요. 사용자 정의 프로시저만 나열하는 명령은 SHOW USER PROCEDURES를 참고해요.

출처: 문서

본문

접근 권한이 있는 모든 저장 프로시저를 나열해요. 사용자 정의 프로시저만 나열하려면 SHOW USER PROCEDURES를 확인해요.

구문

SHOW PROCEDURES [ LIKE '<pattern>' ]
  [ IN
    {
      ACCOUNT                                         |

      CLASS <class_name>                              |

      DATABASE                                        |
      DATABASE <database_name>                        |

      SCHEMA                                          |
      SCHEMA <schema_name>                            |
      <schema_name>

      APPLICATION <application_name>                  |
      APPLICATION PACKAGE <application_package_name>  |
    }
  ]

매개변수

LIKE 'pattern'

선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%_)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요.

예를 들어 다음 패턴들은 같은 결과를 반환해요:

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

기본값: 값 없음(출력에 필터링이 적용되지 않음).

[ IN ... ]

선택적으로 명령의 범위(scope)를 지정해요. 다음 중 하나를 지정해요:

  • ACCOUNT: 전체 계정에 대한 레코드를 반환해요.
  • DATABASE, DATABASE db_name: 현재 사용 중인 데이터베이스 또는 지정한 데이터베이스(db_name)에 대한 레코드를 반환해요. DATABASE를 db_name 없이 지정했는데 사용 중인 데이터베이스가 없으면 이 키워드는 출력에 영향을 주지 않아요.
  • SCHEMA, SCHEMA schema_name: 현재 사용 중인 스키마 또는 지정한 스키마(schema_name)에 대한 레코드를 반환해요. SCHEMA는 데이터베이스를 사용 중이거나 정규화된 schema_name(예: db.schema)을 지정한 경우 선택 사항이에요. 사용 중인 데이터베이스가 없으면 SCHEMA를 지정해도 출력에 영향을 주지 않아요.
  • APPLICATION application_name, APPLICATION PACKAGE application_package_name: 이름이 지정된 Snowflake Native App 또는 애플리케이션 패키지에 대한 레코드를 반환해요.

IN ... 을 생략하면 명령의 범위는 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:

  • 데이터베이스를 현재 사용 중이면, 명령은 데이터베이스에서 볼 권한이 있는 객체를 반환해요. 이는 IN DATABASE를 지정한 것과 같은 효과예요.
  • 사용 중인 데이터베이스가 없으면, 명령은 계정에서 볼 권한이 있는 객체를 반환해요. 이는 IN ACCOUNT를 지정한 것과 같은 효과예요.

참고: 데이터베이스 컨텍스트에서 IN 절 없이 SHOW 명령을 사용하면 예상보다 적은 결과가 나올 수 있어요. IN 절을 사용하지 않으면 같은 이름의 객체는 한 번만 표시돼요. 예를 들어 schema1에 테이블 t1이 있고 schema2에도 테이블 t1이 있는데 둘 다 지정한 데이터베이스 컨텍스트 범위 안에 있으면(즉, 선택한 데이터베이스가 schema1과 schema2의 상위), SHOW TABLES는 t1 테이블 중 하나만 표시해요.

사용 메모

  • 이 명령은 실행에 웨어하우스가 필요하지 않아요.
  • 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
  • MANAGE GRANTS 액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만 MANAGE GRANTS 권한을 가져요.
  • 이 명령의 출력을 후처리하려면 파이프 연산자(->>)나 RESULT_SCAN 함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요.
  • 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어 type 출력 컬럼을 선택하려면 SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요.
  • 이 명령은 명령을 실행하는 데 사용된 역할의 액세스 권한에 따라, 지정한 객체 유형에 대해 최대 1만 개의 레코드를 반환해요. 1만 개 제한을 초과하는 레코드는 필터가 적용돼도 반환되지 않아요. 1만 개를 초과하는 결과를 보려면 Snowflake 정보 스키마(Information Schema)의 해당 뷰(존재하는 경우)를 쿼리해요.
  • CLASS를 지정하면 명령은 다음 컬럼만 반환해요:
| name | min_num_arguments | max_num_arguments | arguments | descriptions | language |

출력

명령 출력은 저장 프로시저의 속성과 메타데이터를 다음 컬럼으로 제공해요:

컬럼 설명
created_on 저장 프로시저가 생성된 타임스탬프예요.
name 저장 프로시저의 이름이에요.
schema_name 저장 프로시저가 존재하는 스키마의 이름이에요.
is_builtin 저장 프로시저가 내장형(사용자 정의가 아닌)이면 Y, 그렇지 않으면 N이에요.
is_aggregate 현재 적용되지 않아요.
is_ansi 저장 프로시저가 ANSI 표준으로 정의되었으면 Y, 그렇지 않으면 N이에요.
min_num_arguments 최소 인자 수예요.
max_num_arguments 최대 인자 수예요.
arguments 인자와 반환 타입의 데이터 타입이에요. 선택적 인자는 DEFAULT 키워드로 표시돼요. Snowflake Scripting 저장 프로시저의 경우 출력 인자에는 OUT이 표시돼요.
description 저장 프로시저에 대한 설명이에요.
catalog_name 저장 프로시저가 존재하는 데이터베이스의 이름이에요.
is_table_function 저장 프로시저가 테이블 형식 데이터를 반환하면 Y, 그렇지 않으면 N이에요.
valid_for_clustering 현재 적용되지 않아요.
is_secure 보안 저장 프로시저(secure stored procedure)면 Y, 그렇지 않으면 N이에요.

예제

모든 프로시저 표시:

SHOW PROCEDURES;

다음 예제는 매개변수가 있는 저장 프로시저에 SHOW PROCEDURE를 사용하는 방법을 보여 줘요. 또한 지정한 정규식과 일치하는 프로시저만 목록으로 제한하는 방법도 보여 줘요.

SHOW PROCEDURES LIKE 'area_of_%';
+-------------------------------+----------------+--------------------+------------+--------------+---------+-------------------+-------------------+------------------------------------+------------------------+-----------------------+-------------------+----------------------+-----------+
| created_on                    | name           | schema_name        | is_builtin | is_aggregate | is_ansi | min_num_arguments | max_num_arguments | arguments                          | description            | catalog_name          | is_table_function | valid_for_clustering | is_secure |
|-------------------------------+----------------+--------------------+------------+--------------+---------+-------------------+-------------------+------------------------------------+------------------------+-----------------------+-------------------+----------------------+-----------|
| 1967-06-23 00:00:00.123 -0700 | AREA_OF_CIRCLE | TEMPORARY_DOC_TEST | N          | N            | N       |                 1 |                 1 | AREA_OF_CIRCLE(FLOAT) RETURN FLOAT | user-defined procedure | TEMPORARY_DOC_TEST_DB | N                 | N                    | N         |
+-------------------------------+----------------+--------------------+------------+--------------+---------+-------------------+-------------------+------------------------------------+------------------------+-----------------------+-------------------+----------------------+-----------+

출력 컬럼은 SHOW FUNCTIONS 및 SHOW USER FUNCTIONS의 출력 컬럼과 유사해요. 저장 프로시저의 경우 일부 컬럼(예: is_aggregate, valid_for_clustering)은 현재 의미가 없지만 향후 사용을 위해 예약되어 있어요.

더 알아보기 (Learn more)