powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
17 сообщений из 17, страница 1 из 1
Хранимые процедуры
    #39958081
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать чтоб Id передавался автоматически, а не вручную вводить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE PROC AddTable
(
   @Id int,
   @Name varchar(15),
   @Year int
)
AS
BEGIN
SET IDENTITY_INSERT Bands ON
INSERT INTO Bands(Id,Name,Year) VALUES (@Id,@Name,@Year)
SET IDENTITY_INSERT Bands OFF

SELECT *
FROM Bands
END
--вывод
EXEC AddTable
@Id=4,
@Name='Гриндж',
@Year=2005
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958085
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO,

таблица Bands должна содержать автоинкремент

например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table Bands
(
Id int identity
,[Name] nvarchar(128)
,[Year] smallint
)
go
insert into Bands ([Name],[Year])
values ('Band1',2020)
go

select * from Bands 
go
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958089
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

да нет, это. похоже, исправительная процедура, но ею пользуются не по назначению. Там есть уже автоинкремент.
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958090
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad, таблица содержит, но если написать вот так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE PROC AddTable
(
  @Id int identity, <--
   @Name varchar(15),
   @Year int
)
AS
BEGIN
SET IDENTITY_INSERT Bands ON
INSERT INTO Bands(Name,Year) VALUES (@Name,@Year)
SET IDENTITY_INSERT Bands OFF

SELECT *
FROM Bands
END


Выдает ошибку: Incorrect syntax identity
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958092
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, Да, процедура добавляет значение в таблицу.. смысле не по назначению
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958095
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO,

Можно изменить процедуру так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE PROC AddTable
(
  @Id int identity, 
   @Name varchar(15),
   @Year int
)
AS
BEGIN
IF @Id IS NULL
    INSERT INTO Bands(Name,Year) VALUES (@Name,@Year)
ELSE
BEGIN
    SET IDENTITY_INSERT Bands ON
    INSERT INTO Bands(Id, Name,Year) VALUES (@Id, @Name,@Year)
    SET IDENTITY_INSERT Bands OFF
END
GO
EXEC AddTable
@Id=4,
@Name='Гриндж',
@Year=2005
GO
EXEC AddTable
@Id=null,
@Name='Гриндж1',
@Year=2015
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958101
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, ошибка: Неправильный синтаксис около конструкции "END".
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958107
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE PROC AddTable
(
   @Id int,
   @Name varchar(15),
   @Year int
)
AS
BEGIN
SET IDENTITY_INSERT Bands OFF
INSERT INTO Bands(Name,Year) VALUES (@Name,@Year)


SELECT *
FROM Bands
END

EXEC AddTable NULL,'Гриндж23',2006
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958109
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO
Вот так работает:


Жуть то какая.


А зачем вообще параметр @Id, если он не используется?
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958114
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, ай...точно и без него оказывается работает, но раньше требовало id почему то...cпасибо за помощь
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958122
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO,

там еще одного END не хватает. Я написал вариант, который можно использовать как с ID, так и без ID. Если надо вставить значение, меньшее. чем IDENT_CURRENT.
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958123
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью чего изменить значение таблицы используя хранимую процедуру?
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958129
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO,

можно написать программу, которая будет подключаться к серверу и выполнять процедуру, например.
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958131
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, я не о том, чтоб изменить параметры табл. подойдет UPDATE, но как это в процедуру сделать?
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958135
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO,

в этой же процедуре обновление сделать? В этом случае надо ID передавать в процедуру, кроме других параметров и по его значению искать строку для обновления.
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958137
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, Куда id передавать? сейчас оно менять все значение столбца name
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROC EditPerson
(
   @Name nvarchar(15)
)
AS
BEGIN
UPDATE Bands
SET Name=@Name

SELECT *
FROM Bands
END
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39958143
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все понял...спасибо

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER PROC EditPerson
(
   @Id int,
   @Name nvarchar(15)
)
AS
BEGIN
UPDATE Bands
SET Name=@Name
WHERE Id=@Id


SELECT *
FROM Bands
END
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]