Задавайте вопросы, мы ответим
Вы не зашли.
Здраствуйте!
Для собственой разрпаботке начал разбиратся с хранимыми процедурами, для того чтобы действия выпонялись не в среде разработки (Delphi), а на самом сервере, и при первом же примере у меня ни чего не получается, вот пример того что я создал:
DELIMITER $$
DROP PROCEDURE IF EXISTS `new_proc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_proc`(IN pICC VARCHAR(20), IN pNumTel VARCHAR(11), OUT pID_Tovar INT(10))
BEGIN
SET @pID_Tovar = 0;
SELECT `id_Tovar` INTO @pID_Tovar FROM tovar WHERE `ICC` LIKE pICC AND `NumTel` LIKE pNumTel
END $$
DELIMITER ;
а вот ошибка которая выходит:
Script line: 4 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 6
Подскажите в чем дело, либо подскажите литературу которую можно пичитать(желательно только на русском).
Заранее спасибо.
Неактивен
SELECT `id_Tovar` INTO @pID_Tovar FROM tovar WHERE `ICC` LIKE pICC AND `NumTel` LIKE pNumTel;
Забыли в конце строки поставить ;
На русском не знаю что посоветовать, разве что на форуме спрашивать.
Вот кстати хорошая тема, думаю вам будет интересно ознакомиться http://sqlinfo.ru/forum/viewtopic.php?id=363
Неактивен
Спасибо получилось
Но у меня возник вопрос как в процедурах использовать условия, я думаю что должно примерно так
DELIMITER $$
DROP PROCEDURE IF EXISTS `Insert_Prihod` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Insert_Prihod`(IN pICC CHAR(20), IN pNumTel CHAR(11), IN pTypeTovar INT, IN pDoc_id INT)
BEGIN
SET @pID_Tovar = 0;
SELECT `id_Tovar` INTO @pID_tovar FROM tovar WHERE `ICC` = pICC AND `NumTel` = pNumTel AND `TypeTovar_id` = pTypeTovar;
IF @pID_Tovar = 0
INSERT INTO Tovar (`ICC`, `NumTel`, `TypeTovar_id`) VALUES (pICC, pNumTel, pTypeTovar);
SET @pID_Tovar = 0;
SELECT id_Tovar INTO @pID_tovar FROM tovar WHERE ICC LIKE pICC AND NumTel LIKE pNumTel AND TypeTovar_id = pTypeTovar;
END;
INSERT INTO Docpb (Doc_id, Tovar_id, Kol) VALUES (pDoc_id, @pID_Tovar, 1);
END $$
DELIMITER ;
но выводит ошибки всеровно
Отредактированно Spyer (13.12.2009 12:24:49)
Неактивен
http://sqlinfo.ru/forum/viewtopic.php?pid=232#p232
Посмотрите http://sqlinfo.ru/forum/viewtopic.php?pid=3813#p3813
там процедура с комментариями.
И ещё вторая часть статьи http://webew.ru/articles/2080.webew
Неактивен
Спасибо.
С процедурами с условия разобрался, вот только у меня мысль пошла дальше, после того как я добавил процедуры в которой проверяется и добовляется с трока если такой нет, производительность программы не увеличилась и осталось на том уровне на котором и была.
и у меня вознмк вопрос, можно ли в процедуру отправить 2х мерный массив данных и его там обработать? либо есть какойто другой способ. как я понимаю на сервере даные будут обрабатыватся быстрее чем я сначала в программе а потом еще на сервере.
Неактивен