Wiz*_*ard 5 c# oracle stored-functions
create or replace function ar_knyga_egzistuoja(
id number
)
return number
is
kiekis number;
begin
select count(*) into kiekis from knygos where kn_id = id;
return kiekis;
end;
Run Code Online (Sandbox Code Playgroud)
C#代码:
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "ar_knyga_egzistuoja";
cmd.CommandType = CommandType.StoredProcedure;
OdbcParameter param = new OdbcParameter();
cmd.Parameters.Add("id", OracleType.Number).Value = id;
cmd.ExecuteNonQuery();
var kiekis = Convert.ToString(cmd.Parameters["kiekis"].Value);
MessageBox.Show(kiekis);
cmd.Parameters.RemoveAt(0);
conn.Close();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
PLS-00221: 'AR_KNYGA_EGZISTUOJA' is not a procedure or is undefined
ORA-06550: line 1, column 7:
Run Code Online (Sandbox Code Playgroud)
这不是程序而是功能,但我知道我可以像程序一样调用函数,有什么问题?
gfi*_*000 10
ORA-06550您获得的代码意味着该函数是使用无效语句编译的,需要重新编写.我没有看到任何明显错误的代码,因此您可能遇到权限或不正确的表名等问题,并应检查您是否可以首先在PL/SQL编辑器中运行该函数.然后,在你运行之后,试试......
var cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "ar_knyga_egzistuoja";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("id", id);
cmd.Parameters.Add("kiekis", OracleType.Number);
cmd.Parmeters["kiekis"].Direction = ParameterDirection.ReturnValue;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
var kiekis = Convert.ToString(cmd.Parameters["kiekis"].Value);
MessageBox.Show(kiekis);
cmd.Connection.Close();
Run Code Online (Sandbox Code Playgroud)
这应该能够像存储过程一样运行函数,同时期望名为kiekistype 的返回值number可用于工作.