sp _ executesql 系统存储过程用于执行 T-SQL 语句的可重复使用多次,或执行动态生成的 T-SQL 语句。 需要作为输入参数才处理 T-SQL 语句或批次。 它还允许指定以便从 T-SQL 语句生成任何输出可存储 (尽管这未记录 SQL Server 联机丛书中) 的输出参数。
在该输出参数将 sp _ executesql 有用的两种情况是:
在该输出参数将 sp _ executesql 有用的两种情况是:
- 如果 sp _ executesql 生成将非常有用的输出,则存储输出参数此输出将允许调用批处理的更高版本的查询中使用参数。
- 如果 sp _ executesql 执行存储的过程定义使用输出参数的输出参数的 sp _ executesql 用于保存从存储过程生成的输出。
下面的两个示例演示使用输出参数,使用 sp _ executesql 。示例 1 DECLARE @SQLString NVARCHAR(500) DECLAR...
<script type="text/javascript"></script>
下面的两个示例演示使用输出参数,使用
sp _ executesql 。
示例 1
示例 2
示例 1
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)
SET @SQLString = N'SELECT @LastlnameOUT = max(lname)
FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint,
@LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname
CREATE PROCEDURE Myproc
@parm varchar(10),
@parm1OUT varchar(30) OUTPUT,
@parm2OUT varchar(30) OUTPUT
AS
SELECT @parm1OUT='parm 1' + @parm
SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
@parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
@parm1OUT varchar(30) OUTPUT,
@parm2OUT varchar(30) OUTPUT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@parm=@parmIN,
@parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT
SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
go
drop procedure Myproc