我编写了一个 O/R 数据库包装器,它为它从数据库中读取的存储过程生成一些包装器方法。
现在,如果存储过程的输入参数默认为 NULL,我需要生成一些自定义包装器代码。问题是 - 我使用以下方法获取存储的 proc 参数:
SqlCommandBuilder.DeriveParameters(command)
并且它不会带来参数默认值。有没有办法查找这些默认值?它们是否存储在数据库中的任何位置?
顺便说一句,我使用的是 SQL Server 2008
我编写了一个 O/R 数据库包装器,它为它从数据库中读取的存储过程生成一些包装器方法。
现在,如果存储过程的输入参数默认为 NULL,我需要生成一些自定义包装器代码。问题是 - 我使用以下方法获取存储的 proc 参数:
SqlCommandBuilder.DeriveParameters(command)
并且它不会带来参数默认值。有没有办法查找这些默认值?它们是否存储在数据库中的任何位置?
顺便说一句,我使用的是 SQL Server 2008
对于 T-SQL 存储过程,唯一的方法是从表中解析出过程定义sys.sql_modules
。从 sys.parameters 表上关于该has_default_value
列的 BOL:
1 = 参数具有默认值。
SQL Server 仅在此目录视图中维护 CLR 对象的默认值;因此,对于 Transact-SQL 对象,此列的值为 0。要查看 Transact-SQL 对象中参数的默认值,请查询 sys.sql_modules 目录视图的定义列,或使用 OBJECT_DEFINITION 系统函数。
这是一篇写给编写 T-SQL 函数的人的文章,据说就是这样做的:找出存储过程参数的默认值。
基本上,sqlcommandbuilder 类自动生成单表命令,用于协调对数据集所做的更改与 sql 服务器。