login register Sysop! about ME  

2017년 09월 14일 11시 39분 00초,     조회수 : 565
  제목 : Oracle.DataAccess.Client 에서 procedure로 데이터 갖고오기 질문입니다.
SEQ : 34547 글쓴이 : green8146

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

public DataTable GetDataTableByProcedureTest(string proc)
        {

            OracleConnection connection = new OracleConnection(this.DBconnStr);
            connection.Open();
            OracleCommand selectCommand = new OracleCommand(PKG_BOARD_LIST.PROC_BOARD_LIST, 
connection);
           selectCommand.CommandType = CommandType.StoredProcedure; 
            DataTable dataTable = new DataTable();

            selectCommand.Parameters.Add("P_SEARCHKEYWORD", OracleDbType.NVarchar2);
            selectCommand.Parameters["P_SEARCHKEYWORD"].Value = "title";

            selectCommand.Parameters.Add("P_SERACHTARGET", OracleDbType.NVarchar2);
            selectCommand.Parameters["P_SERACHTARGET"].Value = "title";

            selectCommand.Parameters.Add("P_PAGENO", OracleDbType.Int32);
            selectCommand.Parameters["P_PAGENO"].Value = 1;

            selectCommand.Parameters.Add("P_PAGESIZE", OracleDbType.Int32);
            selectCommand.Parameters["P_PAGESIZE"].Value = 10;

            selectCommand.Parameters.Add("cur_vcursor", OracleDbType.RefCursor);
            selectCommand.Parameters["cur_vcursor"].Direction = ParameterDirection.Output;

            OracleDataAdapter oraadt = new OracleDataAdapter(selectCommand);
            oraadt.Fill(dataTable);
            return dataTable;
        }

현재 소스가 이건데 에러는 안나는데 데이터를 못갖고 오네요 파라미터 다 제대로 넘겨줬는데..

아래는 패키지 및 프로시져입니다

create or replace PACKAGE BODY PKG_BOARD_LIST AS
    PROCEDURE  PROC_BOARD_LIST(
      P_SEARCHKEYWORD IN VARCHAR2 
    , P_SERACHTARGET IN VARCHAR2 
    , P_PAGENO IN INTEGER 
    , P_PAGESIZE IN INTEGER
    , cur_vcursor OUT T_CURSOR
    )
    IS 
    BEGIN
    OPEN cur_vcursor FOR 
SELECT A.*
	   FROM
	   	   (
	   	   SELECT 
	   	   	    COUNT(*) OVER () as TotalCount
	   	   	   ,ROW_NUMBER() OVER(ORDER BY BOARD_NO DESC) AS RowNumber
	   	   	   ,SVID_BOARD
	   	   	   ,BOARD_USER
	   	   	   ,BOARD_WRITE
	   	   	   ,COMPANY_NAME
	   	   	   ,BOARD_GUBUN
	   	   	   ,BOARD_TITLE
	   	   	   ,BOARD_NO
            ,BOARD_CHANEL
            ,BOARD_TYPE
            ,BOARD_REGDATE
            ,DELFLAG
            ,ATTCHFLAG
            ,READCOUNT
            ,PWD
       FROM 
	   	   	   U_BOARD_LIST
	   	   WHERE
	   	   	   (CASE P_SERACHTARGET
	   	   	   	   WHEN 'Title' THEN BOARD_TITLE 
	   	   	   	   WHEN 'Writer' THEN BOARD_USER
	   	   	   	   ELSE P_SEARCHKEYWORD
	   	   	   END) LIKE '%' || P_SEARCHKEYWORD || '%'
	   	   ) A
	   WHERE 
	   	   RowNumber BETWEEN ((P_PAGENO - 1) * P_PAGESIZE + 1) AND (P_PAGENO * P_PAGESIZE);

CLOSE cur_vcursor;
END PROC_BOARD_LIST;
END PKG_BOARD_LIST;

뭔가 문제가 있을까요?
데이터는 당연히 있고 아래 쿼리도 문제 없는거같은데.. 그냥 저대로 select 하면 데이터 조회 되거든요.

  wind1379
  2017-09-14(13:19)
캐릭 이미지
일단... CLOSE cur_vcursor; 문장을 빼보세요... [Mr.NET!]



제목 작성자 날짜 조회
Oracle.DataAccess.Client 에서 procedure로 데이터 갖고오기 질.. (1) green8146 2017-09-14 565

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})