查找存储过程的哪些参数可以为空(可选)

bza*_*fir 5 sql t-sql sql-server stored-procedures

我知道我可以使用以下查询来查找所有存储过程及其参数:

SELECT 
    r.*, p.*
FROM
    INFORMATION_SCHEMA.ROUTINES AS r INNER JOIN
    INFORMATION_SCHEMA.PARAMETERS AS p 
    ON r.SPECIFIC_SCHEMA = p.SPECIFIC_SCHEMA AND r.SPECIFIC_NAME = p.SPECIFIC_NAME
WHERE     (r.ROUTINE_TYPE = N'PROCEDURE')
Run Code Online (Sandbox Code Playgroud)

从这里我可以看到(几乎)所有关于参数的信息,但我不知道如何找到哪些是可空的或具有默认值.

有没有办法找到这个?

谢谢

Mar*_*ith 9

所有参数都可以为空.没有语法可以指定NULL不应传递的语法.

要找出具有默认值的那些,您可以检查sys.parametersCLR存储过程

SELECT has_default_value,name
FROM sys.parameters
where object_id=object_id('YourProc')
Run Code Online (Sandbox Code Playgroud)

遗憾的是,此列目前尚未正确填充 TSQL存储过程,并且唯一的方法是解析对象定义.