. NET 에서 ORACLE 함수 와 과정 을 사용 하고 인 자 를 출력 합 니 다 (1)

8951 단어 .NET_C#
Technorati 태그:. net, ADO. NET, oracle, DBHELPERORA
우 리 는. NET 에서 ORACLE 를 호출 하 는 과정 이 MS - SQLSERVER 의 저장 과정 을 호출 하지 않 았 다 는 것 을 알 고 있 습 니 다. 특히 매개 변수 로 출력 할 때 ORACLE 의 기능 이 강하 기 때문에 이것 을 처리 할 수 없습니다. 이것 은 당신 이 알 고 있 습 니 다. 하하.
두 가지 솔 루 션 중 하 나 는 ORACLE 의 함수 가 매개 변 수 를 가지 고 출력 할 수 있 는 것 입 니 다. 이것 은 SQLSERVER 의 저장 과정 (개인 비교 의견 은 ORACLE 의 함수 로 SQLSERVER 의 저장 과정 에 대응 합 니 다.
노정
둘째, PROCEDURE 의 OUT 매개 변수 로 결 과 를 가 져 와 이 문 제 를 해결 하 는 것 이다.
다음은 프로그램 테스트 를 해 보 겠 습 니 다.
qiantian" runat="server">
    

Button1" runat="
server" OnClick="
Button1_Click" Text="
FUNCTION 출력 "/ > button 2" runat = "테스트
server" OnClick="
button2_Click" Text="
테스트 PROCEDUCE 출력 "/ >
Button3" runat="
server" Text="
테스트 FUNCTION 3 층 "OnClick ="
Button3_Click" /> Button4" runat="
server" Text="
테스트 PROCEDURE 3 층 "OnClick ="
Button4_Click" />
백 엔 드 코드 테스트 FUNCTION 출력 (코드 에 직접 쓰기)
       protected void Button1_Click(object sender, EventArgs e)
        {
            OracleConnection conn = new OracleConnection("Data Source=yu;Persist Security Info=True;User ID=$$$$$$;Password=$$$$$$$$;Unicode=True;");
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "F_ACC_CREATEPERMISSION";
            cmd.CommandType = CommandType.StoredProcedure;
            // add the parameters, including the return parameter to retrieve            
            cmd.Parameters.Add("CategoryID", OracleType.Number).Value = 555;
            cmd.Parameters.Add("Description", OracleType.VarChar, 50).Value = "zzz1";
// the return value 
            cmd.Parameters.Add("Result", OracleType.Number).Direction = ParameterDirection.ReturnValue;
            // execute the function
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            // output the result
            Response.Write("Resultis: " + cmd.Parameters["Result"].Value);
        }

배경 코드 는 테스트 FUNCATION (매개 변수 데이터베이스 클래스 의 3 층 모드 로 출력)

 
 
 
PERMISSION 클래스 의 코드
        /// 
        ///       
        /// 
        public int Create(int categoryID, string description)
        {
            int rowsAffected;
            OracleParameter[] parameters = 
				{
					new OracleParameter("CategoryID", OracleType.Number),
					new OracleParameter("Description", OracleType.VarChar,50) 
				};
            parameters[0].Value = categoryID;
            parameters[1].Value = description;
            return DbHelperOra.RunProcedure("F_ACC_CREATEPERMISSION", parameters, out rowsAffected);          
        }

DbHelperOra 의 코드
   /// 
        ///       ,       	  ORACLE  FUNCTION  RETURN  	
        /// 
        ///      
        ///       
        ///      
        /// 
        public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
        {
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                int result;
                connection.Open();
                OracleCommand command = BuildIntCommand(connection, storedProcName, parameters);
                rowsAffected = command.ExecuteNonQuery();
                result = int.Parse(command.Parameters["ReturnValue"].Value.ToString());
                //Connection.Close();
                return result;
            }
        }

BuildIntCommand 호출 코드 세그먼트
        /// 
        ///   OracleCommand     (         )	
        /// 
        ///      
        ///       
        /// OracleCommand     
        private static OracleCommand BuildIntCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters);
            //command.Parameters.Add(new OracleParameter("ReturnValue", OracleType.Int32, 4, ParameterDirection.ReturnValue,false, 0, 0, string.Empty, DataRowVersion.Default, null));
            command.Parameters.Add("ReturnValue", OracleType.Number).Direction = ParameterDirection.ReturnValue;
            return command;
        }
BuildQueryCommand      
        /// 
        ///   OracleCommand   (         ,        )
        /// 
        ///      
        ///      
        ///       
        /// OracleCommand
        private static OracleCommand BuildQueryCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            OracleCommand command = new OracleCommand(storedProcName, connection);
            command.CommandType = CommandType.StoredProcedure;
            foreach (OracleParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }
            return command;
        }

 

좋은 웹페이지 즐겨찾기