无法调用应该 return 文本值的 Postgresql 函数

Can't call Postgresql function which should return text value

我在使用 FireDAC 调用 Delphi 中的 Postgresql 函数时遇到了一个小问题。 Postgresql 函数定义如下:

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

所以它需要一个 "text" 值和 returns 一个 "text" 值。 我可以使用长文本参数(超过 900 个字符)调用它,它 returns 在任何 sql 管理工具中都是正确的值,没有任何问题。

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

但是在Delphi中用下面的代码调用它:

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

给我以下错误信息:

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

我在这里进行了谷歌搜索,但找不到任何解决问题的方法。 这可能是我看不到的非常小的东西:-(

我正在使用 Delphi XE7 和 PostgreSQL 9.3

好的,现在我开始工作了。 看起来它需要一个额外的索引字段名称,这实际上没有意义,因为它只返回一个值...

所以当我将我的代码更改为以下内容时它起作用了:

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