![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Коллеги! Помогите написать процедурку обновления.... [MSSQL]
BCPP_Builder_Dev © (2002-10-09 15:26:00)Собственно имеется 2 таблицы:
MassMedia в которой есть текстовое "PubHouse";
и MassMediaPubHouses - с двумя полями:
MMPHID - integer
PubHousename - varchar.
Надобно написать процедурку осуществляющую нормализацию, т.е. в Massmedia.Phouse должно быть значение ключа из MassMediaPubHouses.
Так как раньше никогда не делал, возникли сложности с использованием переменных, как собственно передать переменные из выборки курсора дальше для обновления данных?
CREATE PROCEDURE [dbo].[sp_GENERAL_UPDATER] AS
DECLARE @PH INT
DECLARE @PHN VARCHAR
DECLARE MMPH CURSOR FOR
SELECT * FROM MassMediaPubHouses
OPEN MMPH
FETCH NEXT FROM MMPH
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @PH = MMPH.MMPHID
SET @PHN = MMPH.PubHouseName
UPDATE MassMedia SET PubHouse = @PH WHERE PubHouse = @PHN
FETCH NEXT FROM MMPH
END
CLOSE MMPH
DEALLOCATE MMPH
GO
wicked (2002-10-09 20:27:00) [1]это что, каждый раз так надо делать?....
если это одноразовая акция, то можно обойтись парой запросов... только структуру таблиц приведи хоть немного...
Best Before 2024 (2002-10-09 17:36:00) [2]
CREATE PROCEDURE [dbo].[sp_GENERAL_UPDATER] AS
DECLARE @VAR1 INT
DECLARE @VAR2 VARCHAR
DECLARE MMPH CURSOR FOR
SELECT FVAR1, FVAR2 FROM MassMediaPubHousesOPEN MMPH
FETCH NEXT FROM MMPH INTO @VAR1, @VAR2
WHILE (@@FETCH_STATUS = 0)
BEGIN
UPDATE MassMedia SET PubHouse = @PH WHERE PubHouse = @PHN
FETCH NEXT FROM MMPH INTO @VAR1, @VAR2
END
CLOSE MMPH
DEALLOCATE MMPH
GO
BCPP_Builder_Dev (2002-10-09 17:34:00) [3]Таблицу засосал из екселя, ес-но там все поля текстовые. Разбиваю структуру на СУБД.
Делаю таблицу типа: список возможных значений с двумя полями: ключ и текстовое поле с названием.
а в основной табличке делаю ключ вместо текстового поля. Разумеется перегон всего этого дела требует усилий (не руками же енто делать).
В моем случае основная таблица А, в ней есть поле х типа текст
Дочерняя таблица-свойство х - В, в ней ключ К и название свойства Н.
CREATE PROCEDURE [dbo].[sp_GENERAL_UPDATER] AS
DECLARE @PH INT
DECLARE @PHN VARCHAR
DECLARE MMPH CURSOR FOR
SELECT * FROM В
OPEN MMPH
FETCH NEXT FROM MMPH
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @PH = MMPH.MMPHID
SET @PHN = MMPH.PubHouseName
UPDATE А SET х = @PH WHERE х = @PHN
FETCH NEXT FROM MMPH
END
CLOSE MMPH
DEALLOCATE MMPH
GO
still (2002-10-09 17:28:00) [4]еще раз другими словами объясни, плз
BCPP_Builder_Dev (2002-10-09 17:23:00) [5]Ну неужели никто не поможет????!!!!