디버깅 함수

Cloud Spanner SQL은 다음과 같은 디버깅 함수를 지원합니다.

ERROR

ERROR(error_message)

설명

오류를 반환합니다. error_message 인수는 STRING입니다.

Cloud Spanner SQL은 오류를 발생시킬 수 있는 표현식을 처리할 때와 동일한 방식으로 ERROR를 처리합니다. 특별히 보장되는 평가 순서는 없습니다.

반환 데이터 유형

Cloud Spanner SQL은 컨텍스트에서 반환 유형을 추론합니다.

예시

다음 예시의 쿼리는 행 값이 정의된 두 값 중 하나와 일치하지 않으면 오류 메시지를 반환합니다.

SELECT
  CASE
    WHEN value = 'foo' THEN 'Value is foo.'
    WHEN value = 'bar' THEN 'Value is bar.'
    ELSE ERROR(concat('Found unexpected value: ', value))
  END AS new_value
FROM (
  SELECT 'foo' AS value UNION ALL
  SELECT 'bar' AS value UNION ALL
  SELECT 'baz' AS value);

Found unexpected value: baz

다음 예시에서 Cloud Spanner SQL은 x > 0 조건 전이나 후의 ERROR 함수를 평가할 수 있습니다. 일반적으로 Cloud Spanner SQL은 WHERE 절 조건 간의 순서를 보장하지 않고 ERROR 함수에 특별한 보장을 하지 않기 때문입니다.

SELECT *
FROM (SELECT -1 AS x)
WHERE x > 0 AND ERROR('Example error');

다음 예시에서 WHERE 절은 IF 조건을 평가하여 조건이 충족되지 않는 경우에만 Cloud Spanner SQL이 ERROR 함수를 평가하도록 합니다.

SELECT *
FROM (SELECT -1 AS x)
WHERE IF(x > 0, true, ERROR(FORMAT('Error: x must be positive but is %t', x)));'

Error: x must be positive but is -1