상세 컨텐츠

본문 제목

오라클에서 c# 닷넷 파라미터 값 받어서 처리하기

데이터베이스

by 김일국 2010. 11. 13. 04:04

본문

1. 닷넷 코드

oraclehelper클래스 이용

string spName = "SP_USER_LOGIN_SELECT"; // 조회용 저장프로시저명
            OracleParameter ps = new OracleParameter("v_OUT", OracleType.Cursor);
                ps.Direction = ParameterDirection.Output;
            OracleParameter p_USER_ID = new OracleParameter("p_USER_ID", OracleType.VarChar);

                p_USER_ID.Direction = ParameterDirection.Input; //삭제가능 기본값이 Input 이라서
                p_USER_ID.Value = row["USER_ID_SEARCH"];
                OracleParameter[] param = { ps, p_USER_ID };
                DataSet ds = OracleHelper.ExecuteDataset(OracleHelper.OraconString("PORTALCOMMONConn"), CommandType.StoredProcedure, spName, param);
            return ds;

닷넷기본클래스 이용

string ConnStr = ConfigurationSettings.AppSettings["ConnectionStringName"];
            OracleConnection oConn = new OracleConnection(ConnStr);
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = oConn;
            cmd.CommandText = spName;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("p_USER_ID", OracleType.VarChar).Direction = ParameterDirection.Input;
            cmd.Parameters.Add("v_OUT", OracleType.Cursor).Direction = ParameterDirection.Output;
            cmd.Parameters["p_USER_ID"].Value = row["USER_ID_SEARCH"];
            oConn.Open();
            OracleDataAdapter da = new OracleDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            oConn.Close();
   cmd.Dispose();
            return ds;

 

상단에 참조 필요 ( 에러시 해당 프로젝트 DLL 참조를 추가해야 합니다. )

using System.Data.OracleClient;
using System.Configuration;

 

2. 오라클 프로시저 CURSOR를 이용한 레코드셋 넘기기

CREATE OR REPLACE PROCEDURE SP_TEST(
  p_USER_ID IN VARCHAR2,
  v_OUT OUT SYS_REFCURSOR)
IS
USER_NO VARCHAR(30);
USERID VARCHAR(30);
PASSWD VARCHAR(30);
NAME VARCHAR(30);
TYPE_CD VARCHAR(30);
TYPE_NM VARCHAR(30);
TODATE DATE;
PRINTER_NM VARCHAR(30);
OFFICE_TYPE VARCHAR(30);
/******************************************************************************
   NAME:       SP_TEST
   PURPOSE:    프로시저 레코드셋 출력 테스트

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        2010-11-13          1. Created this procedure.

   NOTES:

   Automatically available Auto Replace Keywords:
      Object Name:     SP_TEST
      Sysdate:         2010-11-13
      Date and Time:   2010-11-13, 오전 12:05:19, and 2010-11-13 오전 12:05:19
      Username:         (김일국)
      Table Name:       ()
   exec SP_TEST( 'boramcom', :C );
******************************************************************************/
BEGIN
   OPEN v_OUT FOR
 SELECT  A.USER_NO  -- 사용자번호
   ,A.USER_ID    -- 사용자ID
   ,CASE WHEN NVL(A.PASSWD, '') <> '' THEN A.PASSWD
      WHEN LENGTH(NVL(A.JUMIN_NO, '')) = 13 THEN SUBSTR(A.JUMIN_NO,1, 7)
      ELSE '' END AS PASSWD -- 사용자패스워드
   ,A.NAME     -- 사용자명
   ,A.TYPE_CD     -- 사용자타입
   ,B.TYPE_NM    -- 사용자타입명
   ,SYSDATE AS TODATE  -- 금일일자
   ,CASE WHEN A.TYPE_CD = '000003' THEN 'S01001'
      WHEN A.TYPE_CD = '000004' THEN 'S01001'
      ELSE A.ISSUE_OFFICE END AS OFFICE_TYPE
   ,NVL(A.PRINTER_NM, '') AS PRINTER_NM 
   FROM  T_USER A
      INNER JOIN T_USERTYPE B
      ON A.TYPE_CD = B.TYPE_CD
   WHERE  USER_ID = p_USER_ID;
 EXCEPTION
 WHEN NO_DATA_FOUND THEN
  NULL;
 WHEN OTHERS THEN
  RAISE;
END SP_TEST;

 

관련글 더보기

댓글 영역