java와 Oracle 에서의 사용법은 서치해보니 많이 나온다.
c# 과 Mssql 의 경우도 서치하면 정보가 많다.
DataTable 혹은 oracle.sql.ARRAY 등을 이용한 내용들..
하지만, java 와 Mssql 에서의 방법에 대해서는 없다.
그래서 찾던 중 Mssql 의 Type 활용하여 해결하였다.
먼저 사용자정의 타입을 생성해야 한다.
1.
CREATE TYPE UserDataType AS TABLE ( ID Int, TextData varchar(255), DateValue datetime )
그리고 프로시저 생성시 파라미터로 위에 생성한 타입을 받는다.
2.
Create proc p_TestProc ( @UserDataType dbo.UserDataType ReadOnly ) as --Select from the Table Type passed to SP Select * from @UserDataType GO
그런 뒤 호출한다.
3.
Declare @UserDataType dbo.UserDataType Insert into @UserDataType SELECT 1, 'SomeText', getdate() Exec p_TestProc @UserDataType
Mybatis 안에서는 위 3번의 내용을 수정하면 된다.
<select id="testSelect" parameterType="map" resultType="map>
Declare @UserDataType dbo.UserDataType Insert into @UserDataType <foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.textData}, #{item.dateValue})
</foreach>
Exec p_TestProc @UserDataType
</select>
'DB' 카테고리의 다른 글
Pivot 결과로 컬럼, 로우 총합 구하기 (0) | 2018.08.29 |
---|---|
[스크랩] SQL Server 배열형 매개변수 처리 (0) | 2016.10.20 |
[스크랩] SQL문의 자료형 불일치에 대한 성능 저하 (0) | 2016.04.06 |
오라클 - 토드에서 컬럼순서(ID) 바꾸기 (0) | 2013.10.30 |