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