我有一个存储过程:
CREATE OR REPLACE PROCEDURE UpdateFileMapping(field in number, original_Field_Names in DBMS_SQL.varChar2_table, mapped_Field_Ids in DBMS_SQL.number_table)
IS
C NUMBER := DBMS_SQL.OPEN_CURSOR;
N NUMBER;
BEGIN
DBMS_SQL.PARSE(C,'INSERT INTO input_file_mapping VALUES(input_file_mapping_id.NextVal, 3, field, :fieldName, :mappedFieldId)', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(C,':fieldName', original_Field_Names);
DBMS_SQL.BIND_ARRAY(C,':mappedFieldId', mapped_Field_Ids);
N := DBMS_SQL.EXECUTE(C);
DBMS_SQL.CLOSE_CURSOR(C);
END;
如何调用此类过程,该过程从C#中输入DBMS_SQL.varChar2_table
类型?
答案 0 :(得分:0)
您需要为系统包含正确的ODP.NET provider,然后使用OracleConnection
和OracleCommand
类型来创建连接并执行存储过程。 ODP.NET附带了大量文档和many examples。
答案 1 :(得分:0)
尝试:
void ExecOracleStoredProcedure(int field, string[] original_Field_Names, int[] mapped_Field_Ids)
{
using (OracleConnection connection = new OracleConnection(connectionString))
using (OracleCommand command = connection.CreateCommand())
{
command.CommandText = "UpdateFileMapping";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue(":field").Value = field;
command.Parameters.AddWithValue(":original_Field_Names").Value = original_Field_Names;
command.Parameters.AddWithValue(":mapped_Field_Ids").Value = mapped_Field_Ids;
connection.Open();
command.ExecuteNonQuery();
}
}
答案 2 :(得分:0)
来自MS的Enterprise Library看起来仍然支持Oracle数据库
对于数据访问应用程序块,还需要以下内容:
运行.NET Framework 3.5 Service Pack 1或.NET Framework 4.0数据提供程序支持的数据库的数据库服务器。这包括SQLServer®2000或更高版本,SQL Server 2005 Compact Edition和Oracle 9i或更高版本。数据库服务器还可以运行.NET Framework 3.5 Service Pack 1或.NET Framework 4.0数据提供程序(OLE DB或ODBC)支持的数据库。
答案 3 :(得分:0)
create or replace procedure UpdateFileMapping(m in Number,y in DBMS_SQL.varChar2_table,z in DBMS_SQL.number_table)
IS
C NUMBER;
N NUMBER;
BEGIN
C := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(C,'INSERT INTO tablename VALUES(:x ,:fieldName,:mappedFieldId)',DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(C,':fieldName',original_Field_Names);
DBMS_SQL.BIND_ARRAY(C,':mappedFieldId',mapped_Field_Ids);
DBMS_SQL.BIND_VARIABLE(C,':x',file_Id);
N := DBMS_SQL.EXECUTE(C);
DBMS_SQL.CLOSE_CURSOR(C);
END;
了解更多信息: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_sql.htm