Tag: oracle

从C#将表类型对象作为输入参数传递给Oracle中的存储过程

我有接受表类型作为输入参数的存储过程。 如何从c#代码传递对象? create or replace TYPE CUSTOM_TYPE AS OBJECT ( attribute1 VARCHAR(10), attribute2 VARCHAR(10) ); create or replace TYPE CUSTOM_TYPE_ARRAY AS TABLE OF CUSTOM_TYPE; PROCEDURE SP_TEST ( P_TABLE_IN IN CUSTOM_TYPE_ARRAY, P_RESULT_OUT OUT SYS_REFCURSOR ) AS BEGIN OPEN P_RESULT_OUT FOR SELECT ti.attribute1, ti.attribute2, ti.attribute3 FROM TABLE(P_TABLE_IN) ea inner join MYTABLE ti on ea.attribute1 = ti.attribute1 and […]

为什么我在此CLOB字段的GetOrdinal函数中获得OutOfRangeexception?

这是我的代码示例。 字段FUNCTION_SCRIPT是我的表IS_FUNCTION中的CLOB字段(唯一的CLOB字段) public void ReadFunction(string FName, out string fContent) { OracleCommand command = _connection.CreateCommand(); OracleTransaction transaction = _connection.BeginTransaction(); command.Transaction = transaction; command.CommandText = “SELECT TO_CLOB(TO_NCLOB(FUNCTION_SCRIPT)) FROM IS_FUNCTION where FNAME=:fName “; command.Parameters.Add(“FName”, OracleType.NVarChar).Value = FName; OracleDataReader odr = command.ExecuteReader(); int temp = odr.GetOrdinal(“FUNCTION_SCRIPT”); OracleLob myLob = odr.GetOracleLob(temp); fContent = (String)myLob.Value; odr.close(); } 当执行temp = odr.GetOrdinal(“FUNCTION_SCRIPT”)语句时,我得到一个超出范围的exception。 不明白为什么? […]

用于Oracle INTERVAL DAY TO SECOND数据类型的NHibernate映射

我挑战我的一位同事的问题并非如此,而是由DBA提出的。 我们在其中一个对象上有一个TimeSpan属性,该属性需要保留。 是的,您可以只从对象的Start和End DateTime属性推断出值,但DBA坚持要将此值保存在数据库表中。 因此,DBA选择保存该值的Oracle数据类型是INTERVAL DAY(2)TO SECOND(6)。 Oracle.DataAccess中的相应类型是OracleDbType.InvervalDS,但是我无法找到与如何使用NHibernate进行映射相关的任何内容。 我们最终得到了这个解决方案 public class SomeTimeSpanTestClass { public virtual string TimeSpanTest { get; protected set; } public virtual TimeSpan ActualTimeSpan { get { // Need to do some formatting of TimeSpanTest before it can be parsed return TimeSpan.Parse(TimeSpanTest); } set { TimeSpanTest = string.Format(“{0}{1} {2}:{3}:{4}.{5}”, value.ToString().Contains(‘-‘) ? “-” : […]

RDLC LocalReport导出到Excel确实很慢

我们有一个Asp.Net页面,它针对后端的Oracle数据库运行RDLC Local报告,导出到Excel电子表格时速度非常慢。 我做了一些调查并确定查询本身不应该受到责备 – 我可以使用SQL Developer直接针对Oracle运行查询,并在大约5秒内将结果导出到Excel,但是当我通过asp运行它时。网页和ReportViewer控件大约需要3分钟才能返回。 有没有人有任何建议,为什么这么慢? 查询返回大约8000行,每行约30列,所以它不是一个很小的结果集,但它也不是很大。 关于如何优化报告的任何建议都将不胜感激。 我正在使用Microsoft.ReportViewer.WebForms版本10.0.0.0,有谁知道v11是否有性能改进? 编辑:尝试过ReportViewer v11,速度没有提高。

从c#传递数组到Oracle过程

我正在尝试将数组传递给oracle过程。 我搜索了它,首先我创建了一个名为’dizi’的类型(在这里输入链接描述 )。 所以它适用于oracle开发人员。 问题是; 我不能将我的c#数组作为参数传递给procedure。 那么如何将我的数组传递给我的程序呢? 这是我的代码(当我执行时,oracle错误说:并非所有变量都绑定) public void InsertQuestion(List area_list) { quest_areas = area_list.ToArray(); command.Connection = connect; connect.Open(); var arry = command.Parameters.Add(“Areas”, OracleDbType.Varchar2); arry.Direction = ParameterDirection.Input; arry.CollectionType = OracleCollectionType.PLSQLAssociativeArray; arry.Value = quest_areas; command.CommandText =”TESTPROCEDURE(:Areas)”; command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); connect.Close(); }

EF 4,如何添加部分类

我需要扩展我的EF部分类,因为我想添加一些function来使用Oracle的序列,但是我真的不知道如何使用这个部分类的东西,我制作了一个单独的.cs文件并将其命名为一个我自动生成的类如下: namespace GlassStoreDAL { public partial class CAR { private int _sequences; public int sequences { get { return _sequences; } set { _sequences = value; } } } } 现在我认为,在我的BLL上 – 它引用了GlassStoreDAL – 我可以找到我的“序列”属性,但显然出现了问题,我将不胜感激。 这是我生成的部分类,我应该还有序列属性吗? [EdmEntityTypeAttribute(NamespaceName=”Model”, Name=”CAR”)] [Serializable()] [DataContractAttribute(IsReference=true)] public partial class CAR : EntityObject { #region Factory Method /// /// Create a new […]

如何为.Net应用程序选择Oracle提供程序?

我试图弄清楚将(现有的)ASP.Net应用程序连接到Oracle数据库以读取其字典信息的最佳方法是什么。 可能性太多了: MS Data Provider for Oracle(需要8.1.7,命名空间System.Data.OracleClient) Oracle Data Provider for .NET(需要9.2,命名空间Oracle.DataAccess) 用于OLE DB的Oracle Provider MSDASQL和ODBC 由于我当前的应用程序使用MSSQL服务器,进一步的选项将是: 链接服务器,通过server..user.object访问 通过OPENROWSET链接服务器 关于SO的类似主题有几个问题,但只有一些人接受了答案。 您对每位车手的体验如何? 它们的优缺点是什么? 当然Oracle推荐ODP.Net。 版本9.2(或更高版本)的要求今天是个问题吗?

C# – 我应该使用静态数据库连接

在我连接到Orace数据库的应用程序中,我总是创建一个新连接,打开它,执行OracleCommands,最后关闭它。 最近我认为实现静态连接会更好。 假设我有一个可以从任何地方访问的静态连接。 每次我需要连接到数据库时,我都可以检查静态连接的状态,如果它尚未打开则打开它,然后关闭它。 你认为这会有益还是有更多的缺点?

将字节数组从Oracle RAW转换为System.Guid?

我的应用程序使用DataReader在ADO.NET中编写的自定义数据访问层与Oracle和SQL Server数据库进行交互。 现在我遇到了GUID(我们用于主键)和Oracle RAW数据类型之间转换的问题。 插入oracle很好(我只是在System.Guid上使用ToByteArray()方法)。 当我从数据库加载记录时,问题是转换回System.Guid。 目前,我正在使用从ADO.NET获得的字节数组传递给System.Guid的构造函数。 这似乎有效,但数据库中出现的Guid与我以这种方式生成的Guids不对应。 我无法更改数据库架构或查询(因为它重用于SQL Server)。 我需要代码将Oracle中的字节数组转换为正确的Guid。

Oracle.DataAccess错误

我有一个在Windows环境中运行的asp.net / C#Web应用程序。 该项目构建良好,并在我的本地机器的VB.net开发服务器上运行完美。 但是,当我发布到真正的应用程序服务器时,我收到以下错误消息: [OracleException(0x80004005):提供程序与Oracle客户端版本不兼容] [TypeInitializationException:’Oracle.DataAccess.Client.OracleConnection’的类型初始值设定项引发exception。 目前有一个版本的应用程序运行正常,我正在不同目录的实时服务器上进行测试。 我甚至尝试从工作应用程序中抓取Oracle.DataAccess .dll但仍然得到相同的错误消息。