Вызов хранимых функций PgSQL на обновление данных

Вопросы, связанные с доступом к данным

Вызов хранимых функций PgSQL на обновление данных

Сообщение Michaelikus » 09 июн 2014, 16:00

Имеется, исправно работающая, хранимая функция такого содержания:

Код: выделить все
CREATE OR REPLACE FUNCTION calloffice.write_call_result (
  called_phones varchar,
  called_date timestamp,
  called_status varchar
)
RETURNS void AS
$body$
DECLARE

BEGIN
update calloffice.debts
set
status=called_status,
calltime=called_date,
attempts=attempts+1
where
phone=called_phones and dt_call=date_trunc('day', called_date);
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;


вызывается она например вот так:
Код: выделить все
select calloffice.write_call_result('89091234567', LOCALTIMESTAMP, '23e23e23e23e23')


Однако ее нельзя использовать через ODBC в качестве запроса на обновление данных, например так:
Код: выделить все
select calloffice.write_call_result('[ColumnPhone]', LOCALTIMESTAMP, '[ColumnResult]')

А всё потому, что программа ругается так:
Clipboard04.png
Clipboard04.png (2.98 KiB) Просмотров: 13280


А при наглой попытке всеже исполнить этот запрос, получаем вот так:
Clipboard02.png
Clipboard02.png (27.51 KiB) Просмотров: 13280



На сколько я знаю, вызывать хранимые процедуры PgSQL через ODBC можно.
Поможите люди добрыя? ;)
Michaelikus
 
Сообщений: 20
Зарегистрирован: 15 янв 2014, 08:34

Re: Вызов хранимых функций PgSQL на обновление данных

Сообщение Jugin » 10 июн 2014, 07:32

Здравствуйте,
Программа выводит предупреждение, о том что запрос должен быть на обновление или вставку данных, предупреждая что select в данном случае делать нельзя. Это предупреждение мы можем убрать. Что касается самого запроса, программа просто передает его в в драйвер, и как он его обрабатывает и почему возникает ошибка, сказать сложно. Попробуйте выполнить этот запрос в программе в окне запуска во вкладке Данные.
Jugin
Администратор
 
Сообщений: 33
Зарегистрирован: 20 ноя 2012, 12:19
Откуда: Россия, Барнаул

Re: Вызов хранимых функций PgSQL на обновление данных

Сообщение Michaelikus » 10 июн 2014, 10:01

Спасибо за наводку, принято.
Michaelikus
 
Сообщений: 20
Зарегистрирован: 15 янв 2014, 08:34

Re: Вызов хранимых функций PgSQL на обновление данных

Сообщение Jugin » 10 июн 2014, 10:19

Да, попробуйте так. После того, как удастся найти правильный синтаксис SQL запроса, так что бы его пропускал драйвер ODBC, его можно будет подставить в запрос на обновление данных.
Jugin
Администратор
 
Сообщений: 33
Зарегистрирован: 20 ноя 2012, 12:19
Откуда: Россия, Барнаул


Вернуться в Вопросы доступа к данным

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron