Я хочу обновить таблицу. Я получаю Имя таблицы и Имя столбца в виде набора данных XML из внешнего интерфейса. Я написал One Cursor для этого. Но это выдает ошибку. Ниже мой курсор
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PMT_Formstatus_Update_Test]
(
@XMLTableNames VARCHAR(MAX)
)
AS
BEGIN
DECLARE @docHandle INT, @ErrorMessage VARCHAR(200), @doc VARCHAR(200)
SET @doc = '<?xml version="1.0" encoding="iso-8859-1" ?>'
DECLARE @Names TABLE
(
TName VARCHAR(50),
CName VARCHAR(50),
IDField VARCHAR(50),
FunctionID INT,
ID INT,
StatusID INT
)
SET @XMLTableNames = @doc + @XMLTableNames
EXEC sp_xml_preparedocument @docHandle OUTPUT, @XMLTableNames
INSERT INTO @Names
SELECT * FROM
OPENXML(@docHandle,'NewDataSet/NameDetails',2)
WITH
(
TName VARCHAR(50),
CName VARCHAR(50),
IDField VARCHAR(50),
FunctionID INT,
ID INT,
StatusID INT
)
DECLARE @FunctionID INT
DECLARE @StatusID INT
DECLARE @ID INT
DECLARE @TableName VARCHAR(50)
DECLARE @ColumnName VARCHAR(50)
DECLARE @IDField VARCHAR(50)
DECLARE @getTables CURSOR
SET @getTables = CURSOR FOR
SELECT FunctionID, TName, CName, StatusID, IDField, ID FROM @Names
OPEN @getTables
FETCH NEXT
FROM @getTables INTO @FunctionID, @TableName, @ColumnName, @StatusID, @IDField, @ID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @TableName SET @ColumnName = 3 WHERE @IDField = @ID
FETCH NEXT
FROM @getTables INTO @FunctionID, @TableName, @ColumnName, @StatusID, @IDField, @ID
END
CLOSE @getTables
DEALLOCATE @getTables
END
Как написать Update Query в этом случае? Пожалуйста, мне нужны все ваши предложения ...