![]() |
Помогите с простенькой процедурой/функцией
Помогите с простенькой процедурой с параметрами, которая позволит создавать в таблице значения, а при их существовании - заменять.
Таблица в базе данных - 'users' Значений всего там три - 'name' 'work' и 'income' Процедура естественно будет вызываться с параметрами с этими значениями. При вызове - поиск должен производиться по первому полю ('name'). Максимум что смог сделать - это создание в полях: DELIMITER $$ DROP PROCEDURE IF EXISTS `db`.`test_procedure` $$ CREATE PROCEDURE `db`.`test_procedure` (IN param1 VARCHAR(255), IN param2 VARCHAR(255), IN param3 VARCHAR(255)) BEGIN INSERT INTO `db`.`users` ( `Name` , `Work` , `Income` ) VALUES ( param1, param2, param3 ); END $$ DELIMITER ; Остается только добавить проверку на присутствие поля 'Name' и дальнейшее действие - UPDATE либо INSERT - тут не очень понятно. Также не разобрался с функцией чтения из таблицы например при вызове функции чтения с имеющимся параметром 'name' - вывод соответствующих Name значений полей 'Work' и 'Income'? Надеюсь на вашу помощь. |
Цитата:
Код:
select * from users where name='твой текст' Код:
declare @counter int |
Может есть резон попробывать структуры запроса
INSERT INTO table (столбец 1, столбец2) VALUES (значение 1, значение2) ON DUPLICATE KEY UPDATE что сделать; Или оператор REPLACE, отличаетса от INSERT тем, что если есть запись старая удаляетса и новая создаетса |
Спасибо за ответы!
Ис пользовал ON DUPLICATE KEY UPDATE В таблице полю 'name' присвоил UNIQUE - все работает. Осталась только функция запроса: Вызов функции с параметром 'name', по которому происходит поиск по таблице, и возврат остальных значений. |
Цитата:
|
Как именно задать входящую переменную и исходящие?
Синтаксис MySQL иногда повергает меня в ужас.. особенно в первые дни знакомства :) DELIMITER $$ DROP FUNCTION IF EXISTS `db`.`getvariables` $$ CREATE FUNCTION `db`.`getvariables` (IN param1 VARCHAR(255)) RETURNS VARCHAR // Тут не уверен во входящем параметре и типе возврата BEGIN set @fff=select * from users where name=param1 return @fff; END $$ DELIMITER ; В таком виде - не хочет. |
До сих пор не разобрался...
Функцию вообще можно вызывать с параметром? |
Цитата:
этого достаточно. Присваивание не требуется. Для ознакомления с синтаксисом: http://dev.mysql.com/doc/refman/5.0/...procedure.html http://www.devshed.com/c/a/MySQL/Examining-MySQL-50/3/ |
Время: 02:13. |
Время: 02:13.
© OSzone.net 2001-