我正在执行执行一些动态sql的存储的proc。这是我在4GuysFromRolla.com上找到的示例
CREATE PROCEDURE MyProc (@TableName varchar(255), @FirstName varchar(50), @LastName varchar(50)) AS -- Create a variable @SQLStatement DECLARE @SQLStatement varchar(255) -- Enter the dynamic SQL statement into the -- variable @SQLStatement SELECT @SQLStatement = "SELECT * FROM " + @TableName + "WHERE FirstName = '" + @FirstName + "' AND LastName = '" + @LastName + "'" -- Execute the SQL statement EXEC(@SQLStatement)
如果您注意到,他们使用 SET* 的关键字 SELECT intead 。我不知道你能做到这一点。有人可以向我解释两者之间的区别吗?我一直认为 SELECT 只是用于选择记录。 ***
SELECT是ANSI,SET @LocalVar是MS T-SQL
SELECT允许多个分配者:例如SELECT @foo = 1,@ bar = 2