Я пытаюсь вызвать хранимую функцию postgres из интерфейса ECPG, который передает массивы символов в качестве входных данных.В настоящее время я получаю «слишком мало аргументов», когда пытаюсь открыть курсор.Соответствующие выдержки:
ECPG file:
EXEC SQL BEGIN DECLARE SECTION;
const char* cid = connid;
const char* stmt = NULL;
char tgrpkey[64]; // group key
char ccakey[64]; // call control agent key
char dhostkey[64]; // dest host key
char regusrkey[64]; // Registration user
EXEC SQL END DECLARE SECTION;
stmt = SELECT * FROM sipbasicquery(:ccakey::char[],:tgrpkey::char,:dhostkey::char[],:regusrkey::char[])";
EXEC SQL AT :cid PREPARE pstmt FROM :stmt;
EXEC SQL AT :cid DECLARE cur CURSOR FOR pstmt;
EXEC SQL AT :cid OPEN cur;
EXEC SQL AT :cid FETCH NEXT FROM cur INTO DESCRIPTOR sqlda;
Хранимая функция существует на моем сервере и имеет следующую подпись.
CREATE OR REPLACE FUNCTION sipbasicquery(cca character[], tgrp character[],
dhost character[], usr character[])
RETURNS SETOF sipbasinfo AS $$
Может кто-то, почему генерируется ошибка слишком мало аргументов?
При включенной отладке ECPG ошибка выглядит следующим образом:
[23064]: prepare_common on line 110: name pstmt; query: "SELECT * FROM sipbasicquery($1::char[],$2::char[],$3::char[],$4::char[])"
[23064]: raising sqlcode -202 on line 117: too few arguments on line 117
Кажется, что аргументы соответствуют моей хранимой процедуре.Почему слишком мало?Спасибо
Дейв