Вызов MySql функции удаленно не удается

0

Когда я пытаюсь вызвать определенные пользователем функции с помощью удаленного соединения, это дает мне ошибку.

Дело в том, что запрос без каких-либо функций отлично работает для удаленного подключения.

Итак, как я могу вызывать функции удаленно.

Запрос: select jobcardid,sonno,sonnumber,getSalesOrderCountByStatus('completed',1)as finished,getSalesOrderCountByStatus('pending',sonnumber)as inprocess,getSalesOrderCountByStatus('',1)as total from tblm_jobcard where sonnumber like 'A121';

Функция:

CREATE DEFINER=root@localhost FUNCTION getSalesOrderCountByStatus(v_status varchar(12), v_salesorderid integer) RETURNS int(11)
    READS SQL DATA
BEGIN
DECLARE cnt integer(10);
if(length(v_status)>0) then 
select count(1) into cnt from tblm_jobcard where sonno = v_salesorderid and status = v_status;
else
select count(1) into cnt from tblm_jobcard where sonno = v_salesorderid ;
end if;
RETURN cnt;

В удаленном соединении не получается ничего повесить.

  • 3
    Очень трудно помочь, если вы не сообщите нам, какую ошибку вы получаете, и не расскажете нам, что вы делали.
  • 0
    Так что либо ваша функция глючит, либо вы пытаетесь вызвать хранимую процедуру, а не функцию, используя select. Покажите некоторый код, покажите точную ошибку, которую вы получите.
Показать ещё 1 комментарий
Теги:
jdbc

1 ответ

0

попробовать

DELIMITER $$

CREATE FUNCTION getSalesOrderCountByStatus(v_status VARCHAR(12), v_salesorderid INTEGER) RETURNS INT(11)
BEGIN
DECLARE cnt INTEGER(10);
IF(LENGTH(v_status)>0) THEN 
SELECT COUNT(1) INTO cnt FROM tblm_jobcard WHERE sonno = v_salesorderid AND STATUS = v_status;
ELSE
SELECT COUNT(1) INTO cnt FROM tblm_jobcard WHERE sonno = v_salesorderid ;
END IF;
RETURN cnt;
END$$
DELIMITER ;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню