2016-09-06 3 views
2

FireDAC과 함께 Postgresql 함수를 호출 할 때 약간의 문제가 있습니다.텍스트 값을 반환해야하는 Postgresql 함수를 호출 할 수 없습니다.

CREATE OR REPLACE FUNCTION public."pgpDecryptMe" (
    todecode text 
) 
RETURNS text AS 
$body$ 
DECLARE 
    PGPPrivate TEXT; 
BEGIN 
... 

그래서 그것은 "텍스트"값을 예상하고 "텍스트"값을 반환 PostgreSQL의 기능은 다음과 같이 정의되어있다. 긴 텍스트 매개 변수 (900 문자 이상)로 호출 할 수 있으며 문제없이 SQL 관리 도구에서 올바른 값을 반환합니다.

select "pgpDecryptMe"('c1c04c030...a378624e6a659a20765') as Decrypt 

그러나 다음 코드로 델파이에서 호출 :

[FireDAC][DatS]-2. Object [id] is not found 

내가 봤 여기 검색 그러나 어떤 해결책을 찾을 수 없습니다

PGQuery.SQL.Text := 'select "pgpDecryptMe"(:test) as testvalue'; 
PGQuery.ParamByName('test').AsString := 'c1c04c030...a378624e6a659a20765'; 
PGQuery.Open(); 

것은 나에게 다음과 같은 오류 메시지를 제공 문제는 그것은 아주 작은 뭔가 내가 델파이 XE7과 PostgreSQL 9.3 함께 일하고 :-(

을 볼 수 없습니다 아마도

답변

3

좋아, 지금은 그것이 추가 인덱스 필드가 필요한 것 같습니다. 작업있어 그것은 단지 하나 개의 값을 반환하기 때문에 정말 이해가되지 않습니다 이름 ... 나는 다음에 내 코드 변경시

가 그래서 일 :

PGQuery.SQL.Text := 'select "pgpDecryptMe"(:test) as testvalue'; 
PGQuery.ParamByName('test').AsString := 'c1c04c030...a378624e6a659a20765'; 
PGQuery.IndexFieldNames := 'testvalue'; 
PGQuery.Open();