2010-04-20 1 views

ответ

1
DELIMITER $$ 

CREATE PROCEDURE prc_filler (cnt INT) 
BEGIN 
     SELECT name 
     FROM data; 
END 
$$ 

DELIMITER ; 
+0

Я использовал следующий код DELIMITER $$ CREATE PROCEDURE 'prc_filler' (CNT INT) НАЧАТЬ ВЫБЕРИТЕ имя от данных END $$ DELIMITER; Но я получаю ошибку # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' по строке 4 есть ли у вас какие-либо идеи – Linto

+0

@user: вы пропустили точку с запятой. См. Обновление сообщения. – Quassnoi

2

Действительно простой способ получить прыжок при создании хранимой процедуры - использовать что-то вроде MySQL Query Browser. Я все время использую этот инструмент для написания хранимых процедур и функций.

С этим инструментом, вы делаете следующее:.

  1. правой кнопкой мыши на базе данных из вкладки SCHEMATA, что вы хотите создать прок/FUNC в

  2. Выберите «Создать новый Сохраненная процедура/Функция "или введите CTRL-P.

  3. Введите имя процедуры/функции.

  4. Нажмите Создать МЕТОДИКА или функцию Создать кнопку.

Это создаст процедуру скелета сохраняется или функцию со всей ограничителем и DROP PROCEDURE/DROP линии функции, написанной для вас. Вы можете настроить их, если вам это нужно, но я вообще не считаю нужным это делать.

Затем вы можете запрограммировать proc/func и нажать Выполнить и, предположив, что у вас нет синтаксической ошибки, у вас есть хранимая процедура.

Процедура скелет хранится он генерирует выглядит примерно так:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `database-name`.`proc-name` $$ 
CREATE PROCEDURE `database-name`.`proc-name`() 
BEGIN 

END $$ 
DELIMITER ; 

Надежда, что помогает.

Примечание: текст кнопки и подсказки могут немного отличаться между версиями инструмента, но в остальном он работает одинаково.

0

несколько простых примеров:

delimiter ; 

drop procedure if exists get_user; 

delimiter # 

create procedure get_user 
(
    in p_user_id int unsigned 
) 
begin 
    select * from users where user_id = p_user_id; 
end # 

delimiter ; 


drop procedure if exists list_users; 

delimiter # 

create procedure list_users() 
begin 
    select * from users order by username; 
end # 

delimiter ; 
Смежные вопросы