<x:procedureCall>

x:procedureCall 조치는 저장 프로시저를 호출하기 위해 사용됩니다. 저장 프로시저가 결과 세트를 생성한 경우, 행은 Application Server 시스템의 메모리에 캐시됩니다. 이 결과 세트 중 하나(초기에는 첫 번째 결과 세트)는 항상 현재 결과 세트로 간주됩니다. 각 결과 세트에 있는 행 중 하나(초기에는 첫 번째 행)는 항상 현재 행으로 간주됩니다.

이 조치를 사용하면 id 속성에 이름을 지정한 변수를 사용하여 액세스할 수 있는 DBProcedureCall Bean이 작성됩니다.

DBProcedureCall Bean의 기본 기능을 사용할 수 있도록 JSP 조치가 제공됩니다. Call 문에 매개변수가 있으면 x:getParameter 및 x:parameter 조치를 사용하여 액세스할 수 있습니다. x:nextResultSet 및 x:previousResultSet을 사용하여 여러 결과 세트 사이에 위치지정하고, x:nextRowx:previousRow를 사용하여 현재 결과 세트의 행에 위치지정할 수 있습니다. x:getColumn 조치를 사용하여 결과 세트의 열 값에 액세스할 수 있습니다. (해당 열에 액세스하기 전에 특정 결과 세트에 위치지정해야 합니다.) x:select 조치에 의해 생성되는 결과 세트와는 달리, x:update, x:delete 및 x:insert 조치로는 x:procedureCall에서 생성되는 결과 세트에서 행을 변경할 수 없습니다.

DBProcedureCall Bean의 모든 메소드도 scriptlet을 사용하여 실행할 수 있고 해당되는 모든 특성은 표준 jsp:getPropertyjsp:setProperty 조치를 사용하여 액세스할 수 있습니다.

구문

<x:procedureCall
		id = "name"
		scope = "page|request|session"
		connectionSpec = "connectionSpec_id"
		connectionSpecRef = "connectionSpecRef"	
		maxFieldSize = "numberOfBytes"
		maxRows = "numberOfRows"
		distinctTypesEnabled = "true|false"
		timeOut = "seconds"
		readOnly = "true|false"
		nullToken = "string"
		trace = "true|false" >
 <x:sql>
	</x:sql>
	<x:parameter	
		parmName = "name" 
		position = "number" 
		type = "sqltype"
		mode = "in|out|inout" 
		value = "parmValue" />
</x:procedureCall>

x:procedureCall 조치에는 다음과 같은 속성이 있습니다.

id
지정된 이름 공간에서 DBProcedureCall Bean을 식별하기 위해 사용되는 이름으로, 해당되는 스크립팅 변수 이름이기도 합니다. 지정된 이름은 대소문자가 구분되며 현재 스크립팅 언어 변수 이름 지정 규칙을 준수해야 합니다.
scope
오브젝트가 정의되는 이름 공간을 지정합니다. 기본값은 page입니다.
connectionSpec
x:dataSourceSpec 또는 x:driverManagerSpec 조치의 ID를 지정합니다. 값은 대소문자가 구분되며 범위 내에 있는 connectionSpec 조치와 일치해야 합니다.

참조된 조치는 데이터베이스와의 연결을 작성하는 데 필요한 정보를 제공합니다. x:batch 조치에서 식별된 connectionSpec 조치를 사용하는, x:batch 조치 본문 내에서 조치가 발생할 경우 이 속성을 생략하십시오. 두 위치 모두에 지정했는데 값이 일치하지 않으면 오류 플래그가 표시됩니다.

connectionSpecRef
연결을 작성하는 데 필요한 정보를 확보하기 위해 사용할 DBConnectionSpec 오브젝트에 대한 참조를 지정합니다.

connectionSpec 또는 connectionSpecRef 중 하나를 지정할 수 있으며 둘 다 지정할 수는 없습니다.

maxFieldSize
결과 세트에서 열의 최대 크기를 바이트 단위로 지정합니다. 0 값은 최대값이 없음을 의미합니다. 기본값은 0입니다.
maxRows
결과 세트마다 캐시로 페치할 수 있는 최대 행 수를 지정합니다. 0 값은 최대값이 없음을 의미합니다. 기본값은 0입니다.
distinctTypesEnabled
사용자 정의(고유) 유형을 포함하는 결과 세트에 대해 삽입, 갱신 및 삭제를 사용하는지 여부를 지정합니다. 기본값은 False입니다.
timeOut
명령문을 실행할 수 있는 최대 시간(초)을 지정합니다. 기본값은 0이며 이는 최대값이 없음을 의미합니다.
readOnly
데이터 갱신이 허용되는지 여부를 지정합니다. true 값은 데이터베이스 관리자가 갱신사항을 허용할 경우에도 그 갱신사항이 허용되지 않음을 의미합니다. false 값은 데이터베이스 관리자가 허용할 경우 갱신사항이 허용됨을 의미합니다. 기본값은 false입니다.
nullToken
데이터베이스 널 값을 표시하기 위해 사용할 대소문자 구분 문자열 값을 지정합니다. 이 속성은 선택적입니다. 이는 ProcedureCall에서 열 또는 매개변수 값을 가져오거나 설정하는 조치의 동일 속성에 대해 기본값으로 사용됩니다. 두 위치 모두에서 속성을 생략하면 기본값 &empty가 사용됩니다. (&empty는 HTML 문자 엔티티와 유사한 특수 값으로, 이 속성에서 빈 문자열을 표시하는 것으로 인식됩니다.) 널 값 표시에 대한 자세한 정보는 널 값을 참조하십시오.
trace
데이터베이스 조치 추적의 사용 여부를 지정합니다. 기본값은 False입니다.

x:procedureCall 조치 본문에는 다음과 같은 태그가 올 수 있습니다.

<x:sql>
실행할 SQL 문을 지정합니다.
<x:parameter>
Call 문에서 매개변수에 대한 값 및 메타데이터를 지정합니다. SQL 문에서 x:parameter 태그 및 매개변수 사이에는 일 대 일 대응이 있어야 합니다.

예제

다음 조치는 범위가 세션인 proc1 이름의 DBProcedureCall Bean을 작성합니다. conn1의 정보를 사용하여 데이터베이스에 연결합니다. 저장 프로시저는 사원 번호를 포함하는 입력 매개변수를 허용하고 사원 이름, 부서 및 전화번호를 포함하는 출력 매개변수를 리턴합니다. 예제는 또한 x:getParameter 조치를 사용하여 요청 출력에 출력 매개변수를 씁니다. x:parameter 조치에 대한 세부사항은 <x:parameter>를 참조하십시오. x:getParameter 조치에 대한 세부사항은 <x:getParameter>를 참조하십시오.

<x:procedureCall id="proc1"  scope="session"
			  connectionSpec="conn1" >

	<x:sql>{ CALL empinfo1(:EMPNO, :NAME, :DEPT, :PHONENO) }
	</x:sql>

	<x:parameter parmName="EMPNO" mode="in" type="INTEGER"
		value='<%= request.getParameter("empno") %>' />
	<x:parameter parmName="NAME" mode="out" type="VARCHAR" />
	<x:parameter parmName="DEPT" mode="out" type="VARCHAR" />
	<x:parameter parmName="PHONENO" mode="out" type="VARCHAR" />

</x:procedureCall>

...

<br>Employee number: 
	<x:getParameter name="proc1" parmName="EMPNO"/>
<br>Name:
	<x:getParameter name="proc1" parmName="NAME"/>
<br>Department:
	<x:getParameter name="proc1" parmName="DEPT"/>
<br>Phone number:
	<x:getParameter name="proc1" parmName="PHONENO"/>

다음 조치는 범위가 세션인 proc2 이름의 DBProcedureCall Bean을 작성합니다. 저장 프로시저는 사원 번호를 포함하는 입력 매개변수를 허용하고 열에 사원 번호, 이름, 부서 및 전화번호가 포함되는 단일 행 결과 세트를 리턴합니다. 입력 매개변수는 요청 매개변수 값으로 설정되고 Call 문이 실행됩니다. 예제는 또한 x:getColumn 조치를 사용하여 요청 출력에 결과 세트 열 값을 씁니다. x:parameter 조치에 대한 세부사항은 <x:parameter>를 참조하십시오. x:getParameter 조치에 대한 세부사항은 <x:getParameter>를 참조하십시오.

<x:metaData id="empinfo" xmlref="empinfo.xml" />
...
<x:procedureCall id="proc2"  scope="session"
			  connectionSpec="conn1" metaData="empinfo.xml">
	<x:sql>CALL empinfo2(:EMPNO)</x:sql>
	<x:parameter parmName="EMPNO" mode="in" type="INTEGER"
		value='<%= request.getParameter("empno") %>' />
	
</x:procedureCall>

...

<br>Employee number: 
	<x:getColumn name="proc2" colName="EMPNO"/>
<br>Name:
	<x:getColumn name="proc2" colName="NAME"/>
<br>Department:
	<x:getColumn name="proc2" colName="DEPT"/>
<br>Phone number:
	<x:getColumn name="proc2" colName="PHONENO"/>
이용약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.