加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – T-SQL存储过程 – 检测参数是否作为OUTPUT提供

发布时间:2020-12-12 06:41:42 所属栏目:MsSql教程 来源:网络整理
导读:请考虑以下T-SQL代码段: CREATE PROC dbo.SquareNum(@i INT OUTPUT)ASBEGIN SET @i = @i * @i --SELECT @iENDGODECLARE @a INT = 3,@b INT = 5EXEC dbo.SquareNum @a OUTPUTEXEC dbo.SquareNum @bSELECT @a AS ASQUARE,@b AS BSQUAREGODROP PROC dbo.SquareN
请考虑以下T-SQL代码段:
CREATE PROC dbo.SquareNum(@i INT OUTPUT)
AS
BEGIN
    SET @i = @i * @i
    --SELECT @i
END
GO

DECLARE @a INT = 3,@b INT = 5
EXEC dbo.SquareNum @a OUTPUT
EXEC dbo.SquareNum @b
SELECT @a AS ASQUARE,@b AS BSQUARE
GO
DROP PROC dbo.SquareNum

结果集是:

ASQUARE     BSQUARE
----------- -----------
9           5

可以看出,@ b不是平方,b / c它没有作为输出参数传入(传入参数时没有OUTPUT限定符).

我想知道是否有一种方法可以检查存储过程体(在本例中为dbo.SquareNum体),以查看参数是否确实已作为OUTPUT参数传入?

解决方法

------ THIS WILL GIVE YOU THE BOTH VALUE IN squared------

    CREATE PROC dbo.SquareNum(@i INT OUTPUT)
    AS
    BEGIN
        SET @i = @i * @i
        --SELECT @i
    END
    GO

    DECLARE @a INT = 3,@b INT = 5
    EXEC dbo.SquareNum @a OUTPUT
    EXEC dbo.SquareNum @b OUTPUT
    SELECT @a AS ASQUARE,@b AS BSQUARE
    GO
    DROP PROC dbo.SquareNum


  -----TO CHECK STORED PROCEDURE BODY-----

    SELECT OBJECT_NAME(object_id),OBJECT_DEFINITION(object_id)
    FROM  sys.procedures
    WHERE OBJECT_DEFINITION(object_id) =(SP_NAME)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读