存储过程中的动态 SQL

动态 SQL 使我们能够在运行时生成和运行 SQL 语句。当我们的 SQL 语句包含可能在不同编译时间更改的标识符时,需要动态 SQL。

简单的动态 SQL 示例:

CREATE PROC sp_dynamicSQL
@table_name      NVARCHAR(20),
@col_name        NVARCHAR(20), 
@col_value       NVARCHAR(20) 
AS
BEGIN
DECLARE  @Query  NVARCHAR(max)
SET      @Query = 'SELECT * FROM ' + @table_name
SET      @Query = @Query + ' WHERE ' + @col_name + ' = ' + ''''+@col_value+''''
EXEC     (@Query)
END

在上面的 sql 查询中,我们可以看到我们可以通过在运行时定义 @table_name, @col_name, and @col_value 中的值来使用上面的查询。查询在运行时生成并执行。这是一种技术,我们可以在变量中创建整个脚本作为字符串并执行它。我们可以使用动态 SQL 和连接概念创建更复杂的查询。当你想要创建可在多种条件下使用的脚本时,此概念非常强大。

执行存储过程

DECLARE @table_name     NVARCHAR(20) = 'ITCompanyInNepal',
        @col_name       NVARCHAR(20) = 'Headquarter',
        @col_value      NVARCHAR(20) = 'USA'
    
EXEC    sp_dynamicSQL   @table_name,    
                        @col_name,
                        @col_value

表我用过

StackOverflow 文档

输出

StackOverflow 文档