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
参考文献:
How to specify output parameters when you use the sp_executesql stored procedure in SQL Server
SQL MAX() 函数
本文为原创文章,转载请注明出处!欢迎关注任前程博客 https://renqiancheng.com/,第一时间看后续精彩文章。
网友评论