美文网首页
SQL Server 系统存储过程 sp_executesql

SQL Server 系统存储过程 sp_executesql

作者: 任前程 | 来源:发表于2018-11-04 08:39 被阅读173次

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

    1. 使用 EXEC

    2. 使用系统存储过程 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/,第一时间看后续精彩文章。

    相关文章

      网友评论

          本文标题:SQL Server 系统存储过程 sp_executesql

          本文链接:https://www.haomeiwen.com/subject/xdcrxqtx.html