DetailPage-MSS-KB

知识库

文章编号: 262499 - 最后修改: 2014年12月23日 - 修订: 5.0

 

概要

Sp_executesql系统存储过程用于执行可重复使用多次,T SQL 语句或执行动态生成的 T SQL 语句。它将参数作为输入来处理的 T SQL 语句或批处理。它还允许输出参数,以指定,这样 (尽管这不 SQL Server 联机丛书中已记录),可以将存储从 T SQL 语句生成任何输出。

输出参数将sp_executesql与有用的两个方案是:
  • Sp_executesql生成的输出将非常有用,如果存储此输出到输出参数允许调用批处理参数用于更高版本的查询。
  • 如果定义了使用输出参数的存储的过程执行sp_executesql时, sp_executesql的输出参数可以用于存储从存储过程生成的输出。

更多信息

下面两个示例演示如何使用输出参数的sp_executesql

示例 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
				
示例 2
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
				
其他信息,请参阅"sp_executesql (T-SQL)"和"sp_executesql"中使用 SQL Server 书籍 Online.For 的其他信息,请参阅 SQL Server 联机丛书中的"使用 sp_executesql"和"sp_executesql (T-SQL) SQL Server 7.0 联机丛书中"或 SQL Server 2000年联机丛书中的"sp_executesql"。

这篇文章中的信息适用于:
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2000 标准版
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
关键字: 
kbsqlsetup kbinfo kbmt KB262499 KbMtzh
机器翻译机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 262499  (http://support.microsoft.com/kb/262499/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
其他支持选项
Microsoft Community 支持论坛
直接联系我们
查找 Microsoft 认证合作伙伴
Microsoft 商店