I want to Update a Table. I am getting Table Name and Column Name as a XML DataSet from the Front End. I have written One Cursor for that. But it throws error. Below is my 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
How to write Update Query in this case? Please I need all your suggestions…
You need to concatenate them as string then call
EXEC('')EXEC ('UPDATE TableName SET ColumnName1 = 3 WHERE ColumnName2= Value')