1

我编写了一个 O/R 数据库包装器,它为它从数据库中读取的存储过程生成一些包装器方法。

现在,如果存储过程的输入参数默认为 NULL,我需要生成一些自定义包装器代码。问题是 - 我使用以下方法获取存储的 proc 参数:

SqlCommandBuilder.DeriveParameters(command)

并且它不会带来参数​​默认值。有没有办法查找这些默认值?它们是否存储在数据库中的任何位置?

顺便说一句,我使用的是 SQL Server 2008

4

2 回答 2

1

对于 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 函数的人的文章,据说就是这样做的:找出存储过程参数的默认值。

于 2010-04-12T04:30:37.837 回答
-1

基本上,sqlcommandbuilder 类自动生成单表命令,用于协调对数据集所做的更改与 sql 服务器。

于 2010-11-22T16:41:45.403 回答