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;
오라클 프로시저 실행결과를 C#으로 출력하기 위해서는 (0) | 2010.11.18 |
---|---|
오라클 각종함수사용법 (0) | 2010.11.17 |
MSSQL 과 ORACLE 프로시저 사용비교 (0) | 2010.11.12 |
외래키 추가하기 (0) | 2010.10.18 |
MySql 백업과 복원(MYD,MYI,frm) (0) | 2010.08.31 |
댓글 영역