SQL Server 系统存储过程 sp_executesql 使用方式

阅读:187 - - 类别:《数据库

SQL Server 中执行存储过程的方式有两种:

使用 EXEC
使用系统存储过程 sp_executesql

此篇介绍使用 sp_executesql 执行SQL语句与存储过程。

sp_executesql 的基本模式是:

EXECUTE sp_executesql [SQL语句], [参数],[每个参数赋值|OUTPUT]

① 执行SQL语句:通过select语句获取执行结果

--定义所需的四个参数
DECLARE @SQLString NVARCHAR (500)      --需要执行的SQL语句
DECLARE @ParmDefinition NVARCHAR (500) --参数列表,需要用N''括起来
DECLARE @IntVariable INT               --给定的一个变量
DECLARE @Lastlname varchar (30)        --定义输出的变量
SET @SQLString = N'SELECT @LastlnameOUT = max(UserName) FROM dbo.UserInfo WHERE UserAge = @level'
SET @ParmDefinition = N'@level tinyint,@LastlnameOUT varchar(30) OUTPUT'  --名称与SQL语句中相同
SET @IntVariable = 25
EXECUTE sp_executesql @SQLString, @ParmDefinition,@level = @IntVariable,@LastlnameOUT= @Lastlname OUTPUT --参数后的每个变量都要参数列表中的顺序对应赋值,需要输出的增加OUTPUT
SELECT @Lastlname  --输出结果

备注 MAX() 函数:

--SQL MAX()、MIN() 函数返回一列中的最大值或最小值,NULL值不包括在计算中。
--也可用于文本列,获取按字母顺序排列的最高位或最低值
SELECT MAX (UserName) FROM dbo .UserInfo

② 执行存储过程:

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

参考文献:

  1. How to specify output parameters when you use the sp_executesql stored procedure in SQL Server
  2. SQL MAX() 函数

评论已关闭!