하나의 SELECT 문 구 를 가 진 원 격 저장 과정 이나 저장 과정 에 서버 커서 를 사용 할 수 없습니다.

SSH+SQL Server 프로젝트 에서 sql-query 방식 으로 저장 과정 을 호출 합 니 다.예 를 들 어

  <sql-query name="view_custinfo" callable="true">
        <return class="fdm.pojos.CustInfo">
            <return-property name="FIntelId" column="FIntelId"/>
            <return-property name="FTYPE" column="FTYPE"/>
        </return>
        {call view_custinfo(:param1) } 
  </sql-query>      

이렇게 호출:

Query q = this.getSession().getNamedQuery("view_custinfo");
q.setParameter("param1", "cust");
List list = q.list();

저장 프로 세 스 는 간단 한 select 일 뿐 입 니 다.

ALTER    PROCEDURE view_custinfo
   @table  varchar(12)
 AS
  Declare @SQL varchar(8000)
   select @SQL='select * from '+@table
  Exec(@SQL)

그러나 조회 할 때 오류 가 발생 할 수 있 습 니 다.
Caused by:com.microsoft.sqlserver.jdbc.SQLServerException:하나의 SELECT 문 구 를 가 진 원 격 저장 과정 이나 저장 과정 에 서버 커서 를 사용 할 수 없습니다.기본 결과 집합 이나 클 라 이언 트 커서 를 사용 하 십시오.at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
여러 번 고생 한 후에 알 고 보 니 이런 이 유 였 습 니 다.제 가 applicationContext.xml 에서 설정 한 url 은'jdbc:sqlserver://localhost:1433;databaseName=DEMO;selectMethod=cursor",이 selectMethod=cursor 를 제거 하면 됩 니 다.이 매개 변 수 는 이전에 SQL Server 의 조회 성능 을 향상 시 키 기 위해 설정 한 것 입 니 다.아,이 매개 변 수 를 먼저 제거 할 수 밖 에 없습니다.

좋은 웹페이지 즐겨찾기