isSQLNullable

isSQLNullable 특성은 해당 필드를 널값으로 설정할 수 있는지 여부를 표시합니다. 이 특성은 SQL 레코드의 필드에 대해서만 사용 가능합니다. 올바른 값은 NO(기본값) 및 YES입니다.

EGL은 이전 버전과의 호환성을 위해 이 특성을 유지합니다. 새 코드의 경우, "?" 유형 확장 문자를 사용하여 널 입력 가능 변수를 표시하십시오. 자세한 정보는 유형 확장 문자널값 및 널 입력 가능 유형의 내용을 참조하십시오.

"?"를 사용하여 널 입력 가능으로 작성된 변수는 {isSqlNullable = YES}를 사용하여 널 입력 가능으로 작성된 변수와 약간 다릅니다. 널 입력 가능 변수에 널값이 있고 둘 이상의 피연산자가 있는 표현식에서 사용되는 경우, 여기에는 다음 값이 있습니다.
  • "?"를 사용하여 선언된 경우, 널. EGL은 널 플래그를 존중합니다.
  • {isSqlNullable = YES}로 선언된 경우, 널이 아님. 이 경우, EGL은 널 플래그를 무시하며 값은 0, 공백, 현재 날짜 또는 현재 시간입니다. 이 동작은 이전 버전과의 호환성을 허용합니다.
다음 예제를 고려하십시오.
Record mySQLRecord type SQLRecord
	anInt INT {isSQLNullable = YES};
end...
myRec mySQLRecord;
result, anotherInt INT?;

myRec.anINT = NULL;
result = myRec.anInt + 1;
여기에서 EGL은 표현식을 평가할 때 널 플래그를 무시하므로 결과는 1입니다.
anotherInt INT? = NULL;
result = anotherInt + 1;
여기에서 EGL은 널 플래그를 고려하므로 결과는 널값입니다. (피연산자에 널값이 있는 경우 숫자 표현식의 결과는 널입니다.)
SQL 레코드에 지정된 필드가 널 입력 가능한 경우 다음 기능을 사용할 수 있습니다.
  • 필드는 SQL 데이터베이스 테이블로부터 널값을 허용할 수 있습니다.
  • 필드에 널을 지정할 수 있습니다. 데이터 초기화에서 설명하는 것처럼 이 조치에는 필드를 초기화하는 부작용이 있습니다.
  • 모든 논리식은 필드가 널로 설정되는지 여부 또는 데이터베이스로부터 수신한 데이터가 절단되었는지 여부를 테스트할 수 있습니다.