2016-09-06 10 views
2

FireDACでDelphiでPostgreSQL関数を呼び出すときに少し問題があります。 PostgreSQLの機能は、次のように定義されますテキスト値を返すPostgresql関数を呼び出せません

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

だから、「テキスト」の値を期待し、「テキスト」の値を返します。 長いテキストパラメータ(900文字以上)で呼び出すことができ、問題なくSQL管理ツールで正しい値を返します。

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

しかし、次のコードでDelphiでそれを呼び出す:

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

私はGoogleで検索してここに検索が、どの解決策を見つけることができません。

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

することは私に次のエラーメッセージを表示します問題のために。 それは非常に小さな何かが、私はデルファイXE7とPostgreSQL 9.3で働いています:-(

を見ることができないおそらく

答えて

3

[OK]を、今私は、それは追加のインデックスフィールドを必要なように見えます。 を働いてしまいましたそれだけで一つの値を返したため、本当に意味がありません名前...

私は次の私のコードを変更したときので、それは働いた:

PGQuery.SQL.Text := 'select "pgpDecryptMe"(:test) as testvalue'; 
PGQuery.ParamByName('test').AsString := 'c1c04c030...a378624e6a659a20765'; 
PGQuery.IndexFieldNames := 'testvalue'; 
PGQuery.Open(); 
関連する問題