![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Помогите с простенькой процедурой/функцией |
|
MySQL - Помогите с простенькой процедурой/функцией
|
Новый участник Сообщения: 4 |
Помогите с простенькой процедурой с параметрами, которая позволит создавать в таблице значения, а при их существовании - заменять.
Таблица в базе данных - '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'? Надеюсь на вашу помощь. |
|
Отправлено: 00:38, 21-07-2011 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата GregRUS:
declare @counter int set @counter = (select count(name) from users where name='твой текст') if @counter >0 --Если есть такая запись, значит обновляем begin update users set work = 'твой текст' where name='твой текст' end if @counter =0 --записей нет, вставляем новую строку begin insert into users(name, work, income) values ('текст','текст','текст') end |
|
------- Отправлено: 09:56, 21-07-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Может есть резон попробывать структуры запроса
INSERT INTO table (столбец 1, столбец2) VALUES (значение 1, значение2) ON DUPLICATE KEY UPDATE что сделать; Или оператор REPLACE, отличаетса от INSERT тем, что если есть запись старая удаляетса и новая создаетса |
Отправлено: 11:43, 21-07-2011 | #3 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Спасибо за ответы!
Ис пользовал ON DUPLICATE KEY UPDATE В таблице полю 'name' присвоил UNIQUE - все работает. Осталась только функция запроса: Вызов функции с параметром 'name', по которому происходит поиск по таблице, и возврат остальных значений. |
Отправлено: 15:01, 21-07-2011 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата GregRUS:
|
||
------- Отправлено: 15:51, 21-07-2011 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Как именно задать входящую переменную и исходящие?
Синтаксис 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 ; В таком виде - не хочет. |
Отправлено: 16:36, 21-07-2011 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать До сих пор не разобрался...
Функцию вообще можно вызывать с параметром? |
Отправлено: 23:43, 24-07-2011 | #7 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата GregRUS:
этого достаточно. Присваивание не требуется. Для ознакомления с синтаксисом: http://dev.mysql.com/doc/refman/5.0/...procedure.html http://www.devshed.com/c/a/MySQL/Examining-MySQL-50/3/ |
|
------- Отправлено: 02:11, 25-07-2011 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - [решено] нужна помощь с функцией копирования директорий | camope3 | Программирование и базы данных | 7 | 12-07-2011 22:20 | |
Интернет - Win файрвол с функцией фильтрации по маку | squrtle | Защита компьютерных систем | 2 | 18-03-2010 17:18 | |
Монитор - Телевизор с функцией монитора. | KINEскоп | Прочее железо | 3 | 17-10-2009 20:22 | |
VBS/WSH/JS - Помощь с простенькой задачей) | Triz | Программирование и базы данных | 10 | 05-03-2009 18:35 | |
[решено] Помогите с соединением двух функцией на JavaScript | Igor_I | Вебмастеру | 10 | 20-09-2006 09:13 |
|