Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 04:57

Запрос к Postgres через ADODB.Connection

Автор alexei366, 07 авг 2012, 11:50

0 Пользователей и 1 гость просматривают эту тему.

alexei366

Пытаюсь освоить параметризированный запрос к базе. В базе есть тестовая функция с одним входным параметром (тип text) на выходе просто число 1 ( i integer).
Если создаю параметр который менее 64 символов, тогда всё хорошо, в противном случае

ОШИБКА:  слишком длинный идентификатор
DETAIL:  Идентификатор должен быть короче 64 байт.

Соединение = Новый COMОбъект("ADODB.Connection");
        Соединение.Open("Provider=PostgreSQL OLE DB Provider;......");   
        RecordSet = Новый COMОбъект("ADODB.RecordSet");
        Cmd = Новый COMОбъект("ADODB.Command");   
        Cmd.ActiveConnection = Соединение;   
       
        Cmd.CommandType = 1;
       
        Cmd.CommandText = "select public.test4($1) ";

prm1 = Cmd.CreateParameter(, 202, 1,70, "1q2w3e4r5t1q2w3e4r5t1q2w3e4r5t1q2w3e4r5t1q2w3e4r5t1q2w3e4r5t1q2w3e4r5t");
   
        Cmd.Parameters.Append( prm1 );
RecordSet = Cmd.Execute();





Пробывал и Cmd.CommandType = 4 (выполнение хранимой процедуры) , там ошибки или "Procedure name for automatic arguments is not unique" (добавляю только входной параметр), или "Параметр задан неверно." (входной и выходной), или что-то вроде тип параметра задан не верно воспользуйтесь приведением.




Помогите пожалуйста!!!

Dethmontt

А что именно ты выбираешь из public.test4 ??
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

alexei366

передаю переменную (текстовую), сама функция создает строку в таблице занося в колонку входное значение и возвращает код ошибки. Эта функция чисто для примера, планируется множество входных переменных

Dethmontt

А покажите код функции test4
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

alexei366

Пример по проще без обработки исключения и с возвратом входного значения.

CREATE OR REPLACE FUNCTION sztls_scheta.test6(ii character varying)
  RETURNS character varying AS
$BODY$DECLARE



BEGIN




   INSERT INTO sztls_scheta.test(
             tt)
   VALUES ( ii );

   RETURN ii;

END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION sztls_scheta.test6(character varying) OWNER TO postgres;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск