3.쿼리 매개변수

Edit

각 쿼리 명령어의 옵션들은 쿼리 매개변수로 대치할 수 있습니다. 예를 들어, 예약된 쿼리를 실행할 때 현재 날짜를 기준으로 일주일 범위의 데이터를 조회해서 처리한다거나, 프로시저 실행 시 사용자가 입력한 매개변수 값을 이용하여 쿼리를 실행하려고 할 때 쿼리 매개변수를 사용하게 됩니다.

쿼리 매개변수는 하나의 쿼리 인스턴스가 살아있는 동안 유효하고, set 쿼리 명령어를 사용해서 쿼리를 시작하는 시점에 매개변수 값을 평가하도록 할 수 있습니다. 아래의 쿼리 문자열은 table 명령어를 사용해서 3일 전 0시부터 당일 0시 이전까지의 데이터를 동적으로 조회하는 예제입니다.

set from = string(dateadd(now(), "day", -3), "yyyyMMdd") 
| set to = string(now(), "yyyyMMdd") 
| table from=$("from") to=$("to") sys_cpu_logs

위와 같이 set 명령어를 사용하여 쿼리 매개변수를 설정할 수 있으며, $ 함수를 사용하여 쿼리 매개변수의 값을 참조할 수 있습니다. set 명령어의 우변에는 쿼리 시작 시점에 레코드 없이 평가될 수 있는 모든 표현식을 사용할 수 있습니다. 여러 개의 set 커맨드가 있을 때는 왼쪽부터 순서대로 평가됩니다.

프로시저 호출 시, 프로시저의 매개변수로 전달되는 값들이 쿼리 매개변수로 설정됩니다. 따라서 프로시저를 생성하거나 편집할 때 쿼리 문자열에는 프로시저 매개변수에 해당되는 값들이 이미 있다고 가정하고 $ 함수로 참조하여 사용할 수 있습니다.

3.1set

문법

set 쿼리매개변수 = 표현식

우변의 표현식을 평가한 결과를 쿼리 매개변수로 설정합니다.

3.2setq

문법

setq [ 서브쿼리 ]

서브쿼리를 실행한 결과의 첫번째 레코드에 존재하는 필드-값 쌍을 쿼리 매개변수로 설정합니다. 서브쿼리가 1개 이상의 결과를 반환하더라도 두번째 레코드부터는 무시합니다. setq 커맨드는 다른 모든 커맨드가 실행되기 전에 실행됩니다. 복수의 setq 커맨드가 존재하는 경우, 각 커맨드는 순차적으로 실행됩니다.

Count of comments [0]