C# 如何通过ODP.NET调用Oracle函数?
增删改查,执行存储过程都可以,唯独不能调用函数,虽然能够通过调用带有输出参数的存储过程,但是这样需要花大量时间修改Oracle里的函数。
以下是我的代码,报错内容如下:
ODP.NET版本信息如下:
C# 代码如下:
/// <summary>
/// 执行函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExeFunc_Click(object sender, EventArgs e)
{
// 获取选中行
int strRowIdex = dgvMain.CurrentCell.RowIndex;
// 创建参数对象syid和返回值对象v_j
OracleParameter[] param = new OracleParameter[] {
new OracleParameter("v_syid", OracleDbType.Varchar2, 100),
new OracleParameter("V_J", OracleDbType.Varchar2, 200)
};
param[0].Value = dgvMain.Rows[strRowIdex].Cells["SYID"].Value;
//param[0].Direction = ParameterDirection.Input;
param[1].Direction = ParameterDirection.ReturnValue;
// 更新数据库表
OracleHelper.ExecuteNonQuery(OracleHelper.oraConnStr, CommandType.StoredProcedure, OracleSQL.ExeFunWzjPerson, param);
// 消息提示
MessageBox.Show("执行成功!", "提示");
MessageBox.Show(param[1].Value.ToString(), "提示");
}
Oracle 函数如下:
CREATE OR REPLACE FUNCTION f_update_wzj_person (v_syid in VARCHAR2) return varchar2 is
V_J VARCHAR2(80);
begin
V_J := '1123';
update wzj_person t set t.birthday = sysdate - 10 where t.syid = v_syid;
commit;
return(V_J);
end;
- Creating 32-bit ODP.Net OracleConnection object is
- Oracle.DataAccess (ODP.NET) Array Binding “Value d
- Could not load file or assembly 'Oracle.DataAc
- why I get OracleTruncateException with ODP.NET Ora
- Invalid binding for Oracle UDT in procedure parame
- ODP.NET Connection Pooling Issues - Fault Tolleran
- How to get tracing info for binding variables pass
- No Oracle DataSource in Entity Data Model Wizard
- Connecting to Oracle using Oracle.ManagedDataAcces
- Using ODP.NET to get a RECORD from PL/SQL function
- Oracle query is slow (or fails) from .NET app but
- How to Make ODP.NET 4.0 (64 bit) working on 64 bit
- Oracle.Dataaccess is in the GAC. Can I control the
升级ODP.NET版本解决。。。。