Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Помогите с простенькой процедурой/функцией

Ответить
Настройки темы
MySQL - Помогите с простенькой процедурой/функцией

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите с простенькой процедурой с параметрами, которая позволит создавать в таблице значения, а при их существовании - заменять.
Таблица в базе данных - '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

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата GregRUS:
Также не разобрался с функцией чтения из таблицы например при вызове функции чтения с имеющимся параметром 'name' - вывод соответствующих Name значений полей 'Work' и 'Income'? »
Код: Выделить весь код
select * from users where name='твой текст'
По поводу обновления или изменения. Можно проверять на клиенте, есть ли требуемая запись, или же написать процедуру, которая сначала будет делать нечто подобному:
Код: Выделить весь код
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
Приведенный код - заготовка для дальнейших действий. Но суть, думаю, понятна.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 09:56, 21-07-2011 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Hangsman

Пользователь


Сообщения: 55
Благодарности: 6

Профиль | Отправить PM | Цитировать


Может есть резон попробывать структуры запроса
INSERT INTO table (столбец 1, столбец2) VALUES (значение 1, значение2)
ON DUPLICATE KEY UPDATE что сделать;

Или оператор REPLACE, отличаетса от INSERT тем, что если есть запись старая удаляетса и новая создаетса

Отправлено: 11:43, 21-07-2011 | #3


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за ответы!
Ис пользовал ON DUPLICATE KEY UPDATE
В таблице полю 'name' присвоил UNIQUE - все работает.

Осталась только функция запроса:
Вызов функции с параметром 'name', по которому происходит поиск по таблице, и возврат остальных значений.

Отправлено: 15:01, 21-07-2011 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата GregRUS:
Осталась только функция запроса: »
Я же описал выше метод решения проблемы. Или есть вопросы?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 15:51, 21-07-2011 | #5


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


До сих пор не разобрался...
Функцию вообще можно вызывать с параметром?

Отправлено: 23:43, 24-07-2011 | #7


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата GregRUS:
set @fff=select * from users where name=param1 »
select * from users where name=param1
этого достаточно. Присваивание не требуется.

Для ознакомления с синтаксисом:
http://dev.mysql.com/doc/refman/5.0/...procedure.html
http://www.devshed.com/c/a/MySQL/Examining-MySQL-50/3/

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 02:11, 25-07-2011 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Помогите с простенькой процедурой/функцией

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход