Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Здравствуйте. Подскажите, как вставить данные с помощью хп в несколько таблиц.
Допустим есть 4 таблицы.

Test1
Id1
pole1
pole2
pole3

Test2
id2
Pole4
Pole5
Pole6

Test3
id3
Pole7
Pole8
Pole9

А в 4 таблицу нужно вставитьь Id1, id2, id3.
Test4
Poleid1
Poleid2
Poleid3

Как вот в одну таблицу я знаю как:

CREATE PROCEDURE [dbo].[insert_words2]

 
@Pole1 int ,
@Pole2 int,
@Pole3 int
AS 
BEGIN 
INSERT INTO Test1(Pole1, Pole2, Pole3) 
VALUES(@Pole1, @Pole2, @Pole3) 
END 


А вот в несколько не могу додумать..
20 июн 12, 18:24    [12748126]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
CH1PSET1
INSERT INTO Test1(Pole1, Pole2, Pole3)
VALUES(@Pole1, @Pole2, @Pole3)

INSERT INTO Test2(Pole1, Pole2, Pole3)
VALUES(@Pole1, @Pole2, @Pole3)

INSERT INTO Test3(Pole1, Pole2, Pole3)
VALUES(@Pole1, @Pole2, @Pole3)

[/src]

А вот в несколько не могу додумать..
20 июн 12, 18:27    [12748142]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
INSERT INTO Test1(Pole1, Pole2, Pole3) 
VALUES(@Pole1, @Pole2, @Pole3) 

INSERT INTO Test2(Pole1, Pole2, Pole3) 
VALUES(@Pole1, @Pole2, @Pole3) 

INSERT INTO Test3(Pole1, Pole2, Pole3) 
VALUES(@Pole1, @Pole2, @Pole3) 


Т.е. так .
20 июн 12, 18:28    [12748148]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Спасибо =)
А вот по поводу четвертой таблицы, в которую мне надо добавить айдишники из первых трех. Как можно реализовать?

Так будет работать?

DECLARE VARIABLE ID_th INTEGER;
DECLARE VARIABLE ID_tmat INTEGER;
DECLARE VARIABLE ID_tmar INTEGER;

INSERT INTO Tуые4 (ID1, ID2, ID3) VALUES (@id_th, @id_tmat, @id_tmar);
20 июн 12, 18:30    [12748159]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Но надо их как-то еще выбрать из таблиц

SELECT * FROM Test1 WHERE ID1 = @d_th AND test2 = :@d_tmat AND Test3 = :@d_tmar
20 июн 12, 18:33    [12748173]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Я вообщем написал процедуру с оригинальными данными

CREATE PROCEDURE InsertingData (@snamel char(50), @sage char(50), @snamez char(50), @smesto char(50),@sdate char(50))
AS
begin 
DECLARE VARIABLE ID_th INTEGER;


  INSERT INTO Thorse(Name, Age) VALUES(@snamel,@sage)
SELECT ID_Horse FROM Thorse WHERE Name=@sNamel and Age=@sAge INTO @id_th;
  INSERT INTO Tmark(Name) VALUES(@snamez)

  INSERT INTO Tmatchs(Name, Date) VALUES(@smesto,@sdate)

INSERT INTO TReitings (ID_Horses) VALUES (@id_th);



end


Ошибки следующие:

Сообщение 155, уровень 15, состояние 2, процедура InsertingData, строка 4
ID_th не является известным параметром CURSOR.
Сообщение 156, уровень 15, состояние 1, процедура InsertingData, строка 8
Неправильный синтаксис около ключевого слова "INTO".
Сообщение 137, уровень 15, состояние 2, процедура InsertingData, строка 13
Необходимо объявить скалярную переменную "@id_th".

Помогите исправить..
20 июн 12, 18:53    [12748281]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
CREATE PROCEDURE InsertingData (@snamel char(50), @sage char(50), @snamez char(50), @smesto char(50),@sdate char(50))
AS
begin 
DECLARE @ID_th INTEGER;


  INSERT INTO Thorse(Name, Age) VALUES(@snamel,@sage)
SELECT ID_Horse FROM Thorse WHERE Name=@sNamel and Age=@sAge INTO @id_th;
  INSERT INTO Tmark(Name) VALUES(@snamez)

  INSERT INTO Tmatchs(Name, Date) VALUES(@smesto,@sdate)

INSERT INTO TReitings (ID_Horses) VALUES (@id_th);



Осталось так


Сообщение 156, уровень 15, состояние 1, процедура InsertingData, строка 8
Неправильный синтаксис около ключевого слова "INTO".
20 июн 12, 18:57    [12748307]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
CH1PSET1,

@id_th это ж переменная. надо так
SELECT @id_th = ID_Horse FROM Thorse WHERE Name=@sNamel and Age=@sAge

или так
SET @id_th = (SELECT ID_Horse FROM Thorse WHERE Name=@sNamel and Age=@sAge)
20 июн 12, 19:03    [12748344]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
CH1PSET1,

Ну как минимум попорбуйте в конце поставить end или убрать begin.
20 июн 12, 19:05    [12748355]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
а, если в Thorse несколько значений с Name=@sNamel and Age=@sAge то все это неправильно работать будет
20 июн 12, 19:05    [12748361]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Alexandr Kr.,

declare @t table (idval int,id int identity)
if OBJECT_ID('tempdb..#tmp1') is not null drop table #tmp1
	create table #tmp1(code1 varchar(100),id int identity(1,1))
if OBJECT_ID('tempdb..#tmp2') is not null drop table #tmp2
	create table #tmp2(code1 varchar(100),id int identity(100,1))
if OBJECT_ID('tempdb..#tmp3') is not null drop table #tmp3
	create table #tmp3(id1 int,id2 int,id int identity)
insert into #tmp1 values('qwe')
insert into @t values(@@IDENTITY)
insert into #tmp2 values('qwe')
insert into @t values(@@IDENTITY)

insert into #tmp3(id1,id2)
SELECT [1],[2] FROM 
@t AS p
PIVOT(
max (idval) FOR id IN( [1], [2])
) AS pvt
select * from #tmp3


Что-то такого плана должно Вам подойти.
20 июн 12, 19:11    [12748396]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
EXEC InsertingData ('loshad', '2', 'Final', 'I', '5 marta');

Пишет

Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около "loshad".


как так..
20 июн 12, 19:11    [12748400]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
CH1PSET1,

Уберите скобки. Иначните читать хелпы.
20 июн 12, 19:12    [12748408]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Спасибо.

При вызове ошибка:


(строк обработано: 1)

(строк обработано: 1)

(строк обработано: 1)
Сообщение 544, уровень 16, состояние 1, процедура InsertingData, строка 13
Невозможно вставить явное значение для столбца идентификаторов в таблице "TReitings", когда параметр IDENTITY_INSERT имеет значение OFF.



Таблица Treitings

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TReitings](
	[ID_Horses] [int] IDENTITY(1,1) NOT NULL,
	[ID_Matchs] [int] NULL,
	[ID_Marks] [int] NULL,
 CONSTRAINT [FK_TReitings] PRIMARY KEY CLUSTERED 
(
	[ID_Horses] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
20 июн 12, 19:17    [12748432]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
как указать этот параметр? и где он меняется вообще?
20 июн 12, 19:17    [12748438]     Ответить | Цитировать Сообщить модератору
 Re: Вставка из хп в несколько таблиц  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
туплю,все понял..
20 июн 12, 19:20    [12748453]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить