儲存過程中的動態 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 文件