如何在java中获取存储过程参数的默认值
我需要获取分配给存储过程参数的默认值。如何在java中获取存储过程参数的默认值
我可以使用DatabaseMetaData.getProcedureColumns获取存储过程参数的所有细节,但我没有找到任何方法来获取过程的默认值。
例如,如果我有下面的存储过程
create procedure st_test (
@param1 varchar(10),
@param2 varchar(4000),
@param3 varchar(20) = 'SOMEVALUE',
@param4 varchar(30) = 'OTHERVALUE'
@param5 varchar(4000) = NULL
)
然后我需要获得参数3的默认值,param4 & param5即 'someValue中', 'OTHERVALUE' & NULL
感谢
但是由于以下限制,我也无法找到SQL服务器(我使用的)的最佳方法: 1.使用本机JDBC DatabaseMetaData.getProcedureColumns返回null:P 2.使用Spring只能告诉参数名称和类型但不是默认值的库。 3.使用上述信息将NULL值绑定到这些参数不会有所帮助,因为这些NULL会覆盖默认值,并会影响Procedures中的逻辑。
我也写了我返回程序的整个签名过程,它是这样的:
CREATE PROCEDURE [DBO] [GetString的(@ proc_name中的varchar(100),@string VARCHAR(1000)OUT。 )作为 DECLARE @val VARCHAR(MAX) 声明@Table TABLE( 缬氨酸VARCHAR(MAX) ) BEGIN INSERT INTO @Table EXEC sp_helptext的@proc_name SELECT @val = COALESCE(@val + '' +缬氨酸,Val) FROM @Table select @string = @Val END
此过程返回过程的签名,如果传递给它的名称为In Param。 然后我在String上做了一些处理并获得了它们的默认值。
我试过COLUMN_DEF字段,你说得对,不是所有的驱动都支持这个。我使用sybase jconnect驱动程序,它不支持这个字段:( 我想我需要使用sybase特定的数据库查询来做到这一点。 –