SqlServer存储过程中set @sql 和 select @sql的区别
时间: 2024-01-25 08:05:06 浏览: 142
在 SQL Server 存储过程中,使用 SET 或者 SELECT 语句来声明和赋值变量都是可以的。
但是,SET 语句只能用于声明和赋值变量,不能返回结果集;而 SELECT 语句不仅可以用于声明和赋值变量,还可以返回结果集。
所以,如果存储过程中需要返回结果集,可以使用 SELECT 语句来声明和赋值变量;如果不需要返回结果集,可以使用 SET 语句来声明和赋值变量。
示例:
```
-- 使用 SET 语句声明和赋值变量
CREATE PROCEDURE YourProcedure
@param1 INT,
@param2 NVARCHAR(MAX)
AS
BEGIN
DECLARE @sqlstmt NVARCHAR(MAX);
SET @sqlstmt = N'SELECT * FROM YourTable WHERE ColumnName = ' + CAST(@param1 AS NVARCHAR(MAX));
EXECUTE (@sqlstmt);
END
-- 使用 SELECT 语句声明和赋值变量,并返回结果集
CREATE PROCEDURE YourProcedure
@param1 INT,
@param2 NVARCHAR(MAX)
AS
BEGIN
DECLARE @sqlstmt NVARCHAR(MAX);
SELECT @sqlstmt = N'SELECT * FROM YourTable WHERE ColumnName = ' + CAST(@param1 AS NVARCHAR(MAX));
EXECUTE (@sqlstmt);
SELECT * FROM YourTable WHERE ColumnName = @param1; -- 返回结果集
END
```
阅读全文