ExecuteSQL
목적
FileMaker Pro 파일 내에 지정된 테이블 일치 항목에 대해 SQL 쿼리문을 실행합니다.
포맷
ExecuteSQL ( sql 쿼리 ; 필드 구분자 ; 행 구분자 {; 인수...} )
매개 변수
sql 쿼리 - SQL SELECT 문. 구문은 두 쿼리의 결과를 결합하는 Union 절을 포함할 수 있습니다. 구문은 선택적 인수를 쿼리에서 사용하는 위치를 표시하는 프로그래밍 방식으로 생성된 SQL(동적 매개 변수)을 포함할 수 있습니다. 물음표(?)를 사용하여 동적 매개 변수를 지정합니다.
필드 구분자 - 결과의 필드 간 구분 기호로 사용되는 문자열. 비어 있는 문자열을 지정한 경우 구분 기호는 쉼표입니다. 결과의 마지막 필드 다음에는 필드 구분 기호가 표시되지 않습니다.
행 구분자- 결과의 레코드 간 구분 기호로 사용되는 문자열. 비어 있는 문자열을 지정한 경우 구분 기호는 캐리지 리턴입니다. 행 구분 기호는 결과의 마지막 행 다음에는 표시되지 않습니다.
인수- 쿼리문에서 동적 매개 변수의 값으로 사용되고 평가되는 하나 이상의
표현식.
반환되는 데이터 유형
텍스트
다음에서 발생
FileMaker Pro 12.0
설명
ExecuteSQL을 사용하여 동적 매개 변수를 포함한 SQL SELECT 문을 실행하여 삽입 공격을 통해 보안이 취약해지지 않도록 FileMaker Pro 데이터베이스를 안전하게 쿼리합니다.
ExecuteSQL은 FileMaker Pro에서 생성된 관계를 인식하지 않으며 SQL 문에서 관계를 정의하도록 유연성을 제공하고 레이아웃 문맥과 독립적으로 모든 테이블에서 데이터를 검색합니다.
ExecuteSQL은 데이터나 데이터베이스 스키마를 수정하는SQL 문과 함께 사용할 수 없습니다(예: 삽입 또는 테이블 삭제 명령).
쿼리 구문 분석 또는 실행 중 오류가 발생하면 FileMaker Pro는 ?를 반환합니다.
참고
•SQL 쿼리에서 날짜에 올바를 포맷을 적용하려면 DATE 문을 사용합니다. DATE 문을 사용하지 않는 경우 ExecuteSQL은 날짜를 일반 문자열로 취급합니다.
•FileMaker Pro는 운영 체제나 파일의 위치가 아닌 Unicode/SQL 포맷으로 날짜, 시간 및 숫자 데이터를 반환합니다.
•ExecuteSQL은 중괄호가 없는 SQL-92 구문 ISO 날짜 및 시간 포맷만 승인합니다. ExecuteSQL은 중괄호 안의 ODBC/JDBC 포맷 날짜, 시간 및 타임스탬프 상수를 승인하지 않습니다.
•FileMaker SQL은 유니코드 이진 정렬 순서를 사용합니다. 언어 정렬 또는 기본 언어 중립적 정렬 순서로 사용되는 FileMaker Pro 정렬 순서와는 다릅니다.
예제 1
데이터베이스에 두 테이블, Employee 및 Salary가 포함되어 있고 EmpID 필드를 통해 관련되어 있다고 가정합니다.
메모 Empoyees::EmpID, Salaries::EmpID 및 Salaries::Salary 필드는 숫자 필드입니다.
ExecuteSQL 함수를 사용하면 현재 레코드를 변경하거나 찾기 세트를 수정하지 않고 지정된 레코드에서 필드 값을 반환할 수 있습니다.
ExecuteSQL ( "SELECT Department FROM Employees WHERE EmpID = 1" )은 현재 레코드, 찾기 세트나 레이아웃에 관계없이 개발을 반환합니다.
예제 2
부서의 총 월급에 비례한 직원의 월급 비율을 표시하기 위해 Employees 테이블에 필드를 추가하고 싶다고 가정합니다. FileMaker Pro의 계산을 사용하여 이 값을 생성하더라도 ExecuteSQL 함수를 사용하여 동적 매개 변수를 사용한 이 쿼리를 지정할 수 있습니다. 아래 예제는 필드(S.Salary, E.EmpID 및 S.EmpID)를 지정할 때 Employee 테이블(E)과 Salary 테이블(S)에 대해 별칭을 사용합니다.
Employees 테이블에서 계산 필드를 정의한 다음 ExecuteSQL 함수를 사용하여 다음 쿼리문을 지정합니다.
Round (
100 * Salaries::Salary / ExecuteSQL (
"SELECT SUM ( S.Salary )
FROM Employees E
JOIN Salaries S
ON E.EmpID = S.EmpID
WHERE E.Department = ?" ;
"" ; "" ; Employees::Department
) ;
2 )
각 직원 레코드에서 계산 필드는 직원 부서의 월급 합계에 비례한 직원의 월급의 백분율을 표시합니다. 예를 들어 "Smith"라는 성이 있는 레코드는 52.97를 반환하고 "Mehmet"이라는 성이 있는 레코드는 100을 반환합니다.
관련 주제