. NET 에서 ORACLE 함수 와 과정 을 사용 하고 인 자 를 출력 합 니 다 (1)
8951 단어 .NET_C#
우 리 는. 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;
}