Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимая процедура выполняется несколько раз  [new]
Stas201377
Guest
Здравствуйте! Я недавно приступил к изучению SQL-сервера, поэтому прошу не осуждать меня строго. Собственно дело в том, что я создал на сервере хранимую процедуру, имеющую запрос на вставку записи:

USE [BASE1]
GO
/****** Object: StoredProcedure [dbo].[InsertProc] Script Date: 07/16/2013 14:30:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[InsertProc]
AS
INSERT Задачи ([Номер задачи], [Описание], [Преоритет задачи], [Группа])
VALUES (8, 'Посадить картофель', 'Первый', 'Садовые работы')
EXEC InsertProc

При выполнении процедуры в таблиц "Задачи" вставляется 32 записи вместо 1. Подскажите, как сделать так, чтобы в таблицу вставлялась одна запись. Заранее благодарен.
16 июл 13, 12:55    [14572664]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
qwerty112
Guest
Stas201377
Здравствуйте! Я недавно приступил к изучению SQL-сервера, поэтому прошу не осуждать меня строго. Собственно дело в том, что я создал на сервере хранимую процедуру, имеющую запрос на вставку записи:

USE [BASE1]
GO
/****** Object: StoredProcedure [dbo].[InsertProc] Script Date: 07/16/2013 14:30:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[InsertProc]
AS
INSERT Задачи ([Номер задачи], [Описание], [Преоритет задачи], [Группа])
VALUES (8, 'Посадить картофель', 'Первый', 'Садовые работы')
-- EXEC InsertProc

При выполнении процедуры в таблиц "Задачи" вставляется 32 записи вместо 1. Подскажите, как сделать так, чтобы в таблицу вставлялась одна запись. Заранее благодарен.

гыыы

заремь это (выделил)
16 июл 13, 13:03    [14572709]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Stas201377, спасибо, порадовали :)
Вы мне напомнили мой первый косяк в SQL - когда я в код триггера в конец случайно добавил ALTER TABLE ... DISABLE TRIGGER ..., а потом долго не мог понять, почему он выполняется один раз, а потом перестает работать.
16 июл 13, 13:06    [14572734]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Stas201377
ALTER PROCEDURE [dbo].[InsertProc]
AS
  INSERT Задачи ([Номер задачи], [Описание], [Преоритет задачи], [Группа]) 
  VALUES (8, 'Посадить картофель', 'Первый', 'Садовые работы')
GO
 EXEC InsertProc 

Вот так, наверное, вы хотели? Иначе бесконечная рекурсия получается (инструкция EXEC InsertProc внутри процедуры InsertProc), которая на уровне движка СУБД ограничена 32 уровнями вложенности.
16 июл 13, 13:09    [14572756]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Хотя да, правильнее будет убрать этот EXEC нафиг.

Stas201377
Я недавно приступил к изучению SQL-сервера

[Преоритет задачи]

К изучению русского языка тоже недавно приступили?
16 июл 13, 13:12    [14572770]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Stas201377
Guest
Спасибо большое. Дальше буду разбираться с параметрами. В общем ситуация такая, я хочу значения этих полей не задавать в процедуре, а брать из формы дельфи:

Поле в таблице: "Описание задачи", поле на форме: "Edit1"
Поле в таблице: "Преоритет задачи", поле на форме: "Edit2"
Поле в таблице: "Состояние", поле на форме: "Edit3"
Поле в таблице: "Группа", поле на форме: "Edit4"

Выполнение процедуры планирую осуществлять с помощью кнопки, расположенной на форме.
Собственно вопрос, как добавить в процедуру эти параметры и что указать в свойстве Parametrs компонента AdoSortedProc

Заранее благодарен.
16 июл 13, 13:25    [14572854]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Stas201277
Guest
Гость333
Хотя да, правильнее будет убрать этот EXEC нафиг.

Stas201377
Я недавно приступил к изучению SQL-сервера

[Преоритет задачи]

К изучению русского языка тоже недавно приступили?

торопился просто
16 июл 13, 13:31    [14572892]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Stas201377,

http://msdn.microsoft.com/ru-ru/library/ms187926.aspx
16 июл 13, 13:33    [14572907]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Stas201377
Guest
Я понял что вот так изменить нужно:
ALTER PROCEDURE [dbo].[InsertProc @par int]
AS


Не работает это
16 июл 13, 13:51    [14573033]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Stas201377
Я понял что вот так изменить нужно:
ALTER PROCEDURE [dbo].[InsertProc @par int]
AS


Не работает это

Вы пытаетесь изменить процедуру с именем "InsertProc @par int". То, что заключено в квадратные скобки, считается одним идентификатором.
Надо так:
ALTER PROCEDURE [dbo].[InsertProc] @par int

Или вообще без скобок:
ALTER PROCEDURE dbo.InsertProc @par int
16 июл 13, 14:01    [14573101]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура выполняется несколько раз  [new]
Stas201377
Guest
Заработало). Теперь вопрос как указать поля из формы в ADOSortedProc

Модератор: C этим вопросом в форум по Delphi.


Сообщение было отредактировано: 16 июл 13, 14:06
16 июл 13, 14:01    [14573105]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить