[ADO.NET]ODP.Net을 이용한 Stored Function(저장함수) 호출예제
using System;
using System.Data;
using Oracle.DataAccess;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
class Test
{
static void Main()
{
//get_dalary 함수는 Oracle에 정의 되어 있는 Stored Function 입니다.
//Empno와 같은 사원번호를 입력 인자로 받아 그 사원의 급여를 돌려 줍니다.
string str = "data source=onj;user id=scott; password=tiger";
OracleConnection Conn = new OracleConnection(str);
OracleCommand command = new OracleCommand("get_salary", Conn);
command.CommandType = CommandType.StoredProcedure;
OracleParameter output = new OracleParameter("sal", OracleDbType.Int64);
output.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(output);
OracleParameter input = new OracleParameter("p_id", OracleDbType.Int32);
input.Direction = ParameterDirection.Input;
input.Value = 7900;
command.Parameters.Add(input);
try
{
Conn.Open();
command.ExecuteNonQuery();
Conn.Close();
Console.WriteLine("{0}", output.Value);
Console.ReadLine();
}
catch(OracleException e)
{
Console.WriteLine(e.Number);
Console.WriteLine(e.Message);
Console.WriteLine();
}
}
}
----------------------------------------
using System.Data;
using Oracle.DataAccess;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
class Test
{
static void Main()
{
//get_dalary 함수는 Oracle에 정의 되어 있는 Stored Function 입니다.
//Empno와 같은 사원번호를 입력 인자로 받아 그 사원의 급여를 돌려 줍니다.
string str = "data source=onj;user id=scott; password=tiger";
OracleConnection Conn = new OracleConnection(str);
OracleCommand command = new OracleCommand("get_salary", Conn);
command.CommandType = CommandType.StoredProcedure;
OracleParameter output = new OracleParameter("sal", OracleDbType.Int64);
output.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(output);
OracleParameter input = new OracleParameter("p_id", OracleDbType.Int32);
input.Direction = ParameterDirection.Input;
input.Value = 7900;
command.Parameters.Add(input);
try
{
Conn.Open();
command.ExecuteNonQuery();
Conn.Close();
Console.WriteLine("{0}", output.Value);
Console.ReadLine();
}
catch(OracleException e)
{
Console.WriteLine(e.Number);
Console.WriteLine(e.Message);
Console.WriteLine();
}
}
}
----------------------------------------
* Oracle Server에 작성된 Stored Function
--------------------------------------------
--------------------------------------------
create or replace function get_salary
(p_id in number)
return number
is
v_sal number;
begin
select sal
into v_sal
from emp
where empno = p_id;
return v_sal;
end;
/
*/
(p_id in number)
return number
is
v_sal number;
begin
select sal
into v_sal
from emp
where empno = p_id;
return v_sal;
end;
/
*/
댓글 없음:
댓글 쓰기