Как при использовании sp_executesql указать выходные параметры хранимой процедуры в SQL Server

Переводы статьи Переводы статьи
Код статьи: 262499 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

В процедуры sp_executesql Системная хранимая процедура используется для выполнения инструкции T-SQL, который может быть повторно использован несколько раз или для выполнения динамически построенного инструкции T-SQL. Он принимает параметры в качестве входных данных для обработки инструкций T-SQL и пакетов. Она также позволяет выходных параметров задается таким образом, чтобы все выходные данные, созданные на основе инструкции T-SQL могут быть сохранены (несмотря на то, что он не документирован в электронной документации по SQL Server).

Два сценария, в которых могут быть полезны с выходными параметрами процедуры 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. Дополнительные сведения содержатся в разделе «Использование sp_executesql» в электронной документации по SQL Server и "sp_executesql (T-SQL), в электронной документации по SQL Server 7.0" или «sp_executesql» в электронной документации по SQL Server 2000.

Свойства

Код статьи: 262499 - Последний отзыв: 5 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Ключевые слова: 
kbsqlsetup kbinfo kbmt KB262499 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:262499

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com