ShalvaSoft
php developer
ჯგუფი: Registered
წერილები: 1951
წევრი No.: 181428
რეგისტრ.: 9-February 14
|
#46238253 · 17 Nov 2015, 12:11 · · პროფილი · პირადი მიმოწერა · ჩატი
ასეთი პროცედურა მაქვს
SQL | DELIMITER $$
CREATE PROCEDURE `Update_manifest`(IN parcel INT(11), IN barcode VARCHAR(50), IN sender_name VARCHAR(100), IN sender_surname VARCHAR(100), IN sender_city VARCHAR(500), IN reciver_name VARCHAR(100), IN reciver_surname VARCHAR(100), IN reciver_city VARCHAR(500), IN reciver_address VARCHAR(5000), IN reciver_phone VARCHAR(50), IN weight DOUBLE, IN cost DOUBLE, IN paid DOUBLE, IN unpaid DOUBLE, IN amount DOUBLE, IN shelf DOUBLE) BEGIN DECLARE _sender_city_id INT; DECLARE _sender_city_count INT; DECLARE _reciver_city_id INT; DECLARE _reciver_city_count INT; DECLARE _sender_id INT; DECLARE _sender_count INT; DECLARE _receiver_id INT; DECLARE _receiver_count INT; SELECT `id` INTO _sender_city_id, COUNT(*) INTO _sender_city_count FROM `city` WHERE (`name` = sender_city); IF _sender_city_count == 0 THEN INSERT INTO `city` (`name`) VALUES (sender_city) ; SELECT LAST_INSERT_ID() INTO _sender_city_id; END IF; SELECT `id` INTO _reciver_city_id, COUNT(*) INTO _reciver_city_count FROM `city` WHERE (`name` = reciver_city); IF _reciver_city_count == 0 THEN INSERT INTO `city` (`name`) VALUES (sender_city) ; SELECT LAST_INSERT_ID() INTO _reciver_city_id; END IF; SELECT `id` INTO _sender_id, COUNT(*) INTO _sender_count FROM `clients` WHERE (`name` = sender_name AND `surname` = sender_surname); IF _sender_count == 0 THEN INSERT INTO `clients` (`name`, `surname`, `city`) VALUES (sender_name, sender_surname, _sender_city_id); SELECT LAST_INSERT_ID() INTO _sender_id; END IF; SELECT `id` INTO _receiver_id, COUNT(*) INTO _receiver_count FROM `clients` WHERE (`name` = reciver_name AND `surname` = reciver_surname); IF _receiver_count == 0 THEN INSERT INTO `clients` (`name`, `surname`, `city`, `address`, `phone`) VALUES (reciver_name, reciver_surname, _reciver_city_id, reciver_address, reciver_phone); SELECT LAST_INSERT_ID() INTO _receiver_id; END IF; INSERT INTO `transportation` (`Parcel`, `barcode`, `sender`, `receiver`, `weight`, `cost`, `paid`, `unpaid`, `amount`, `shelf`) VALUES (parcel, barcode, _sender_id, _receiver_id, weight, cost, paid, unpaid, amount, shelf); END$$
DELIMITER ;
|
მაძლევს ამ შეცდომას
QUOTE | 1 queries executed, 0 success, 1 errors, 0 warnings
Query: CREATE PROCEDURE `Update_manifest`(IN parcel int(11), IN barcode varchar(50), IN sender_name varchar(100), IN sender_surname var...
Error Code: 1064 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 'count(*) into _sender_city_count FROM `city` where (`name` = sender_city); i' at line 26
Execution Time : 0 sec Transfer Time : 0 sec Total Time : 0.065 sec
|
ჯერ 1 26 ხაზზე სულ სხვა რამე მიწერია
SQL | DECLARE _receiver_id INT;
|
და მერე მეორე თუნდაც ის მეწეროს 26 ხაზზე რა ჯანდაბა უნდა???
P.S. select-ის მერე id-ის ცვლადს არ ანულებს ანუ into-ით რომ ვუშვებ ახალ ინფორმაციას არ წერს შიგ და რამე სხვა მეთოდი უნდა??
გთხოვთ გამასწორებინეთ რა ეს პროცედურა...
ესეც სქემა ყოველი შემთხვევისთვის
SQL | DROP TABLE IF EXISTS `city`;
CREATE TABLE `city` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(500) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Table structure for table `clients` */
DROP TABLE IF EXISTS `clients`;
CREATE TABLE `clients` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `surname` varchar(100) NOT NULL, `phone` varchar(50) NOT NULL, `city` int(11) NOT NULL, `address` varchar(5000) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`surname`), KEY `city` (`city`), CONSTRAINT `clients_ibfk_1` FOREIGN KEY (`city`) REFERENCES `city` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Table structure for table `transportation` */
DROP TABLE IF EXISTS `transportation`;
CREATE TABLE `transportation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Parcel` int(11) NOT NULL, `barcode` varchar(50) NOT NULL, `sender` int(11) NOT NULL, `receiver` int(11) NOT NULL, `weight` double NOT NULL, `cost` double NOT NULL, `paid` double NOT NULL, `unpaid` double NOT NULL, `amount` double NOT NULL, `shelf` double NOT NULL, PRIMARY KEY (`id`), KEY `sender` (`sender`), KEY `receiver` (`receiver`), CONSTRAINT `transportation_ibfk_3` FOREIGN KEY (`sender`) REFERENCES `clients` (`id`), CONSTRAINT `transportation_ibfk_4` FOREIGN KEY (`receiver`) REFERENCES `clients` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
გთხოვთ მომეშველეთ რა * * * გაკეთებით გავაკეთე მაგრამ სულ სხვა მეთოდით და გუგლეში რაც ვნახე stored procedure-ში COUNT()-ზე პრობლემები ქონია mysql-ს და რატომ ვერ ვხვდები
იქნებ ვინმემ ახსნას რატომ იქმნება პრობლემა????
--------------------
ვებ პროგრამისტების საყურადღებოდ http://jobs.ge/119262/
|