Я пытаюсь вызвать функцию Oracle из С#, которая возвращает несколько строк, но она не работает. Вот функция, которую я использую:
create or replace function return_columns(
tableName IN varchar
)
return types.ref_c
as
c_result types.ref_c;
begin
open c_result for
select column_name
from all_tab_columns
where table_name = tableName;
return c_result;
end return_columns;
Вот тип:
create or replace package types
as
type ref_c is ref cursor;
end;
Я нахожусь в коде С#, вызывая функцию следующим образом:
OracleConnection oraConn = new OracleConnection("DATA SOURCE=MySource;PASSWORD=MyPassword;USER ID=MyID");
OracleCommand objCmd = new OracleCommand("MyID.RETURN_COLUMNS", oraConn);
objCmd.CommandType = CommandType.StoredProcedure;
OracleParameter oraParam = new OracleParameter("tableName", OracleType.VarChar);
oraParam.Value = "MY_TABLE";
oraCmd.Parameters.Add(oraParam);
oraConn .Open();
DataTable dt = new DataTable();
OracleDataAdapter ad = new OracleDataAdapter(objCmd);
ad.Fill(dt);
oraConn.Close();
И он продолжает возвращать эту ошибку:
'RETURN_COLUMNS' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored
Что не так с моей функцией Oracle?
What is wrong with my Oracle function?
Проблема заключается не в самом коде PL/SQL, а в том, как вы вызываете эту функцию. Было бы неплохо, если бы вы предоставили код С#, который определяетmyCommand
и параметры (OracleParameter
переменные)? - person Nick Krasnov   schedule 01.05.2014