2012-05-02 1 views
0

저장 프로 시저 매개 변수에 할당 된 기본값을 가져와야합니다.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

감사

답변

1

원칙적으로이 값은 DatabaseMetaData.getProcedureColumns(), 필드 COLUMN_DEF을 사용하여 검색 할 수 있어야합니다. 그러나 모든 드라이버가이를 지원하지는 않을 수도 있습니다. 나는 또한 있기 때문에 다음과 같은 한계 (내가 사용하던) SQL 서버를 할 수있는 가장 좋은 방법을 찾을 수 없습니다 그러나

+0

COLUMN_DEF 필드를 사용해 보았는데, 모든 드라이버가 이걸 지원하지는 않습니다. sybase jconnect 드라이버를 사용하고 있는데이 필드를 지원하지 않습니다. ( sybase 특정 데이터베이스 쿼리를 사용하여이 작업을 수행해야합니다. –

0

: P 2. 스프링을 사용 : 기본 JDBC DatabaseMetaData.getProcedureColumns 사용 1. NULL을 반환하지 않습니다 매개 변수 이름과 유형 만 알려주지 만 기본값은 알려주지 않는 라이브러리. 3. 위의 정보를 사용하여 NULL 값을이 매개 변수에 바인딩하면 이러한 NULL이 기본값을 무시하고 프로 시저 내부의 논리에 재앙을 초래하므로 도움이되지 않습니다. 내가 한

나에게 절차의 전체 서명을 반환하는 절차를 작성,이 같은 간다 :

하는 절차 [DBO]를 만들 [하여 GetString (@ PROC_NAME의 VARCHAR (100), @string VARCHAR (1000) OUT.) DECLARE @val VARCHAR 등 (MAX)가 @Table TABLE 선언 ( 브로 VARCHAR (MAX) INSERT INTO @Table EXEC하여 sp_helptext @proc_name SELECT @val = COALESCE (@val + ','+ 발을 BEGIN ) , Val) FROM @ 테이블 select @string = @Val 끝

이 프로시 저는 In Param으로 전달 된 프로 시저의 서명을 반환합니다. 그런 다음 String에서 일부 Ptocessing을 수행하고 기본값을 얻었다.

관련 문제