转自 http://www.cnblogs.com/reinstallsys/archive/2009/06/15/1503743.html
Syntax
sp_executesql [ @stmt = ] stmt |
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
DECLARE @SQLString nvarchar ( 500 );
DECLARE @ParmDefinition nvarchar ( 500 );
/* Build the SQL string one time. */
SET @SQLString =
N ' SELECT EmployeeID, NationalIDNumber, Title, ManagerID
FROM AdventureWorks.HumanResources.Employee
WHERE ManagerID = @ManagerID ' ;
SET @ParmDefinition = N ' @ManagerID tinyint ' ;
/* Execute the string with the first parameter value. */
SET @IntVariable = 197 ;
EXECUTE sp_executesql @SQLString , @ParmDefinition ,
@ManagerID = @IntVariable ;
/* Execute the same string with the second parameter value. */
SET @IntVariable = 109 ;
EXECUTE sp_executesql @SQLString , @ParmDefinition ,
@ManagerID = @IntVariable ;
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
DECLARE @SQLString nvarchar ( 500 );
DECLARE @ParmDefinition nvarchar ( 500 );
DECLARE @max_title varchar ( 30 );
SET @IntVariable = 197 ;
SET @SQLString = N ' SELECT @max_titleOUT = max(Title)
FROM AdventureWorks.HumanResources.Employee
WHERE ManagerID = @level ' ;
SET @ParmDefinition = N ' @level tinyint, @max_titleOUT varchar(30) OUTPUT ' ;
EXECUTE sp_executesql @SQLString , @ParmDefinition , @level = @IntVariable , @max_titleOUT = @max_title OUTPUT;
SELECT @max_title ;