在存储过程中动态创建更新SQL

在存储过程中动态创建更新SQL,sql,tsql,Sql,Tsql,我尝试创建一个存储过程来更新其sql语句是动态创建的表记录。我写了一些代码,但中途停下来动态运行此查询,如何运行此查询,或者是否有更好的解决方案 此SP如何工作?=>我将需要更新的记录的列名、值和数据类型发送到SP,如下所示 <e columnName=''PaymentStatus'' value=''99'' type=''nvarchar''/> <e columnName=''HotelProvider'' value=''GAT2'' type=''nvarchar'

我尝试创建一个存储过程来更新其sql语句是动态创建的表记录。我写了一些代码,但中途停下来动态运行此查询,如何运行此查询,或者是否有更好的解决方案

此SP如何工作?=>我将需要更新的记录的列名、值和数据类型发送到SP,如下所示

<e columnName=''PaymentStatus'' value=''99'' type=''nvarchar''/>
<e columnName=''HotelProvider'' value=''GAT2'' type=''nvarchar''/>


现在,我如何动态地将@QP参数赋给sp_executesql()方法?

您可以通过将sp_executesql调用包装到另一个
exec
中来实现这一点:

declare @updateStr nvarchar(1000)
-- @updateStr = N'select * from ATable where ID = @p1'
set @updateStr = N'N''select * from ATable where ID = @p1'''
declare @paramStr nvarchar(100)
-- @paramStr = N'@p1 int'
set @paramStr = N'N''@p1 int'''
declare @actualParameters nvarchar(100)
set @actualParameters = N'@p1 = 10'
-- Concatenate parts of query into a variable
declare @sql nvarchar(max)
set @sql = N'sp_executesql ' + @updateStr + ',' + @paramStr + ', ' +  @actualParameters
-- And voila!
exec (@sql)
@QP_PaymentStatus nvarchar,@QP_HotelProvider nvarchar,@QP_TransactionId uniqueidentifier,@QP_UpdatedDate datetime
UPDATE HotelBooking SET PaymentStatus=@QP_PaymentStatus,HotelProvider=@QP_HotelProvider,UpdatedDate=@QP_UpdatedDate,TransactionId=@QP_TransactionId WHERE Id=2
declare @updateStr nvarchar(1000)
-- @updateStr = N'select * from ATable where ID = @p1'
set @updateStr = N'N''select * from ATable where ID = @p1'''
declare @paramStr nvarchar(100)
-- @paramStr = N'@p1 int'
set @paramStr = N'N''@p1 int'''
declare @actualParameters nvarchar(100)
set @actualParameters = N'@p1 = 10'
-- Concatenate parts of query into a variable
declare @sql nvarchar(max)
set @sql = N'sp_executesql ' + @updateStr + ',' + @paramStr + ', ' +  @actualParameters
-- And voila!
exec (@sql)