Jdbc java中如何获取存储过程参数的默认值

Jdbc java中如何获取存储过程参数的默认值,jdbc,Jdbc,我需要获得分配给存储过程参数的默认值 我可以使用DatabaseMetaData.getprocedureclumns获取存储过程参数的所有详细信息,但我找不到任何方法来获取过程的默认值 例如,如果我有以下存储过程 create procedure st_test ( @param1 varchar(10), @param2 varchar(4000), @param3 varchar(20) = 'SOMEVALUE', @param4 varchar(30) = 'OTHERVALUE' @

我需要获得分配给存储过程参数的默认值

我可以使用DatabaseMetaData.getprocedureclumns获取存储过程参数的所有详细信息,但我找不到任何方法来获取过程的默认值

例如,如果我有以下存储过程

create procedure st_test (
@param1 varchar(10),
@param2 varchar(4000),
@param3 varchar(20) = 'SOMEVALUE',
@param4 varchar(30) = 'OTHERVALUE'
@param5 varchar(4000) = NULL
)
然后我需要获取param3、param4和param5的默认值,即“SOMEVALUE”、“OTHERVALUE”和NULL


感谢

原则上,您应该能够使用字段
列_DEF
检索此值。但是,可能并非所有驱动程序都支持此功能。

但是,由于以下限制,我也无法找到针对SQL server(我正在使用)的最佳方法: 1.使用本机JDBC DatabaseMetaData.GetProcedureClumns会返回null:P 2.使用Spring库,它只告诉参数名称和类型,而不告诉默认值。 3.使用上述信息将空值绑定到这些参数没有帮助,因为这些空值会覆盖默认值,并且会破坏过程中的逻辑

我确实写了一个程序,它返回给我整个程序的签名,它是这样的:

创建过程[dbo]。[GetString](@proc_name varchar(100),@string varchar(1000)OUT)作为 声明 @瓦尔瓦查尔(最大值) 声明@Table( 瓦尔瓦查尔(最大值) ) 开始 插入@Table EXEC sp_helptext@proc_name 选择@Val=COALESCE(@Val+''+Val,Val) 来自@Table 选择@string=@Val 结束

此过程返回过程的签名,如果将其名称作为Param传递给该过程,则返回该过程的签名。
然后我对字符串进行了一些处理,得到了它们的默认值。

我尝试了COLUMN_DEF field,你是对的,不是所有的驱动程序都支持这个。我使用的是sybase jconnect驱动程序,它不支持此字段:(我想我需要使用sybase特定的数据库查询来完成此操作。