我正在处理执行一些动态sql的存储过程。以下是我在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 的关键字 SET 。我不知道你能做到这一点。有人可以向我解释2之间的区别吗?我一直以为 SELECT 只是为了选择记录。
答案 0 :(得分:10)
SELECT是ANSI,SET @LocalVar是MS T-SQL
SELECT允许多个受理人:例如SELECT @foo = 1,@ bar = 2
答案 1 :(得分:6)
基本上,SET是设置变量的SQL ANSI标准,SELECT不是。 SET仅适用于单个分配,SELECT可以执行多个分配。而不是在网上的许多地方写出很好的总结的长解释:
答案 2 :(得分:2)
选择允许多项作业。
编辑 你击败了我44秒
答案 3 :(得分:0)
如果需要分配多个值,SELECT可能会更快:
答案 4 :(得分:0)
Select也可用于从select语句中获取变量赋值(假设该语句只返回一条记录)
从我的表中选择@myvariable = myfield,其中id = 1