2013-01-25 6 views
3

우리는 CHAR (18) 문자 집합 옥텟으로 테이블에 저장됩니다 이진 값을 사용한다. 쓰기 파이어 버드 UDF 반환 옥텟

파이어 버드 2.0.4에서는 설정 한 기본 데이터베이스 문자와 연결 문자 세트로 모두 ASCII를 사용했다.

SELECT CREATEBINARY() FROM RDB$DATABASE 

수익률 기대 값

DECLARE EXTERNAL FUNCTION CREATEBINARY 
RETURNS CSTRING(76) 
ENTRY_POINT 'CREATEBINARY' 
MODULE_NAME 'CustomUDF'; 

값을 가져 오는 : 우리는 다음과 같이 정의된다 필요한 데이터를 생성 할 수있는 UDF 있습니다. 파이어 버드 2.5.2에서

, 우리가 설정 한 기본 데이터베이스 문자와 연결 문자 세트 모두로 UTF8을 사용하고 있습니다. 위의 선택 문을 우리의 UDF를 호출하려고하면 이제 오류가 발생합니다

DECLARE EXTERNAL FUNCTION CREATEBINARY 
RETURNS CSTRING(76) CHARACTER SET OCTETS 
ENTRY_POINT 'CREATEBINARY' 
MODULE_NAME 'CustomUDF'; 
: 나는 함수 인 옥텟으로 결과의 문자 집합을 지정하는 선언과 NONE을 수정 시도

Context: Statement::Fetch 
Message: idx_dsql_fetch failed. 

SQL Message: -104 
Invalid Token 

Engine Code: 335544849 
Engine Message: 
Malformed string 

하지만 여전히 동일한 오류 결과가 나타납니다.

델파이 XE2 업데이트 4 IBObjects 4.9 릴리스 (14) 모두를 사용하여 FlameRobin 0.9.3.1870이 테스트, 그리고 우리의 응용 프로그램에서 한 같은 방식으로 실패합니다.

답변

2

문제는 반환 결과에 대해 지정된 잘못된 크기로 나타납니다. 선언을

DECLARE EXTERNAL FUNCTION CREATEBINARY 
RETURNS CSTRING(18) CHARACTER SET OCTETS 
ENTRY_POINT 'CREATEBINARY' 
MODULE_NAME 'CustomUDF'; 

으로 변경하면 기능이 올바르게 작동합니다.