0
我無法獲得動態where子句的工作。我使用的查詢:對sp_executesql使用動態WHERE子句
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'a')
BEGIN
CREATE TABLE a (a INT);
END;
DECLARE @whereClause NVARCHAR(MAX) = ' 1=1 ';
DECLARE @sql NVARCHAR(MAX) = 'SELECT * FROM a WHERE @whereClause';
EXEC sp_executesql @sql, N'@whereClause NVARCHAR(MAX)', @whereClause;
DROP TABLE a;
然後額外的問題是:是否有任何可能性調試與sl_executesql執行的查詢?
一種方法是在執行它之前打印查詢。你可以通過PRINT @sql來做到這一點 – Mukund
你不能使用部分SQL語句作爲參數。你可以事先建立完整的語句('set @sql ='select ... where'+ @ where'),但這是個壞主意(我喜歡'1 = 0; drop table a - '):) – Arvo
您無法將查詢的一部分作爲變量傳遞。動態構建查詢,包括where子句。 – Pred