ALTER PROCEDURE [dbo].[IST_Notice_Status]
(
@FTNO varchar(64)='000000',
@FStatus int = -1,
@FLastModifyNO varchar(64)='',
@errMsg varchar(255) output
)怎么取得 @FTNO,@FStatus,@FLastModifyNO 默认值?从 sys.parameters 表中取得这三个参数的 default_value 都是 null希望能返回一个结果:
name     value
@FTNO  |  '000000'
@FStatus  | -1
@FLastModifyNO | ''

解决方案 »

  1.   

    Default values are recorded in the sys.parameters.default column only for CLR procedures. 
    That column will be NULL for Transact-SQL procedure parameters.只有CLR的存储过程才能看到default value,TSQL的存储过程看不到。
    CREATE PROCEDURE dbo.spDummy
       @para1 int = 123, @para2 int
    AS
    BEGIN
    SELECT 'Hello World' AS Result;
    ENDselect * from sys.parameters
    where object_id = object_id('dbo.spDummy')
    可以看到default value这列的值是null参考
    http://msdn.microsoft.com/en-us/library/ms187926.aspx
      

  2.   

    请看CREATE PROCEDURE的说明。
      

  3.   


    select definition
    from sys.sql_modules
    where object_id=object_id('IST_Notice_Status')
      

  4.   

    至于为何是null,
    SQL Server 只维护该目录视图中的 CLR 对象的默认值;因此,对于 Transact-SQL 对象,此列包含值 0。若要查看 Transact-SQL 对象中的参数的默认值,请查询 sys.sql_modules 目录视图的 definition 列,或使用 OBJECT_DEFINITION 系统函数。参考 http://msdn.microsoft.com/zh-cn/library/ms176074.aspx