如何使用动态 SQL 来更新具有多个条件的查询?

How to use dynamic SQL for updating the query with multiple conditions?

我正在尝试执行以下程序:

ALTER PROCEDURE UFP_PROCEDURE
    (@table_name1 varchar(100))
AS
BEGIN
    DECLARE @sql varchar(200);

    SET @sql = 'UPDATE' + @table_name1 +
               'SET' + QUOTENAME(operation) +  '=' + 'U' + 'where' + QUOTENAME(last_updated_time) + 'IS NOT NULL' + 'AND' + QUOTENAME(last_created_date) + 'IS NOT NULL' + 'AND'  + QUOTENAME(delete_flag) + 'IS NULL'

    EXEC(@SQL)
END

我不知道如何将动态 SQL 与所有单引号一起使用,并且 QUOTENAME 中的列作为无效列给出。

这里 @table_name1 是我从 Azure 管道传递的 table 名称。

如果有人能给出解决方案.....那将非常有帮助。

由于空格和 QUOTENAME 不正确,您的动态查询出现问题,请按以下方式更改您的查询。

ALTER PROCEDURE UFP_PROCEDURE(@table_name1 varchar(100))
AS
BEGIN
    DECLARE @sql varchar(200);

   set @sql = 'UPDATE ' + quotename(@table_name1) +
    ' SET  operation = ''U'' where last_updated_time IS NOT NULL AND last_created_date IS NOT NULL AND delete_flag IS NULL'

    EXEC(@SQL)
END

注意:除了EXEC,您始终可以使用print(@SQL)

检查您的查询
ALTER PROCEDURE UFP_PROCEDURE
    (@table_name1 varchar(100))
AS
BEGIN
    DECLARE @sql varchar(200);

    SET @sql = 'UPDATE ' + QUOTENAME(@table_name1) +
               'SET operation= ''U'' where last_updated_time IS NOT NULL AND last_created_date IS NOT NULL AND delete_flag IS NULL'

    EXEC(@SQL)
END