나는 이것을 검색하여 많은 것을 시도 했으므로 다른 사람이 나를 도울 수 있기를 바랍니다.Groovy의 IN OUT 매개 변수 유형이있는 Oracle 프로 시저 호출
PROCEDURE g$_verify_password1_prd
(p_object IN VARCHAR2,
p_version IN VARCHAR2,
p_password IN OUT VARCHAR2,
p_role OUT VARCHAR2)
이 API 호출이며, 우리의 공급 업체에 의해 작성된 것입니다, 나는 그것을 수정할 수 없습니다하고 싶지 않은 :
나는 다음과 같은 매개 변수와 프로 시저를 포함하는 오라클 패키지가 있습니다. 내 문제는 p_password IN OUT 매개 변수입니다. Groovy에서 이것을 호출하는 구문은 무엇입니까? 이 질문에 대한 답변을 검색 할 때 Sql.inout을 발견했지만 받아 들일 수는 없습니다. 여기에 내 코드, 명심 나는 많은 것들을 시도하고 내가 중단 된 부분이 단순히하시기 바랍니다 : 나는sql.inout
을 제거하면
Caught: groovy.lang.MissingPropertyException: No such property: _SECURITY for class: banner.CheckSecurityService
at banner.CheckSecurityService.SecurityCheck(CheckSecurityService.groovy:49)
at banner.Hello2Service.main(Hello2Service.groovy:20)
: 나는 계속과 유사한 오류가 발생할 수
sql.call '{call G$_SECURITY.G$_VERIFY_PASSWORD1_PRD(?, ?, ?, ?)}',
[$p_object, p_version, ${Sql.inout(Sql.VARCHAR(p_password))}, Sql.VARCHAR],
{ p_password, p_rol ->
//p_password = p_pass
p_role = p_rol
println p_password
println p_rol
}
변수를 전달하면 실행되지만 올바르지 않습니다. 오라클에서 암호 변수를 반환하지 않기 때문입니다. 성공적으로 IN OUT 매개 변수까지 문제없이이 패키지에서 수많은 프로 시저를 호출했습니다. 따라서 누락 된 간단한 것이 있어야합니다. 직접 데이터베이스
sql.call '{call G$_SECURITY.G$_VERIFY_PASSWORD1_PRD(?, ?, ?, ?)}',
[$p_object, p_version, Sql.inout(Sql.VARCHAR(p_password)), Sql.VARCHAR],
{ p_password, p_rol ->
//p_password = p_pass
p_role = p_rol
println p_password
println p_rol
}
* 테스트되지 않은 :
오류를 보면 문제는'G $ _SECURITY', 특히'$ _SECURITY'입니다. '$'가 붙을 때'_SECURITY'는 변수로 취급됩니다. 응용 프로그램에서'''큰 따옴표를 사용하고 계시 겠지만 질문에'''사용했습니다. – dmahapatro
그래서 "이 패키지에서 많은 절차를 성공적으로 호출했습니다"라고 말한 것입니다. :) 나는 이전에 $ 문제를 해결하고 그것을 수정했다. 만약 내가 sql.inout 제거하고 그냥 변수를 전달하고 $ 함께 동일한 패키지 이름을 사용하여 계속 오류가 사라지지만 예상대로 작동하지 않습니다. – tnichol