SqlCommandBuilder.DeriveParameters(命令) 和 IsNullable

问题描述 投票:0回答:2

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

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

SqlCommandBuilder.DeriveParameters(command)

并且它不带参数默认值。有什么办法可以查找这些默认值吗?它们是否存储在数据库中的任何位置?

顺便说一句,我正在使用 SQL Server 2008

sql-server orm sqlcommandbuilder
2个回答
1
投票

对于 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 函数的人的,据说该函数可以做到这一点:弄清楚存储过程参数的默认值。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.