Tag: oracle

Oracle SQL:选择具有多列之间最新日期的单行

我的基表结构如下所示: 创建表EXAMPLE_TABLE { ID NUMBER NOT NULL, – 这里的其他栏目, CREATE_USER VARCHAR2(255 BYTE)NOT NULL, CREATE_DATE DATE DEFAULT SYSDATE NOT NULL, UPDATE_USER VARCHAR2(255 BYTE), UPDATE_DATE DATE } 我想要做的是选择具有最高update_date或create_date的行的id。 所以这样的事情(虽然这不起作用 – 在存储过程中将pID定义为out变量): SELECT ID,MAX(GREATEST(CREATE_DATE,UPDATE_DATE)为LAST_MODIFIED 来自EXAMPLE_TABLE 将ID转回pID; 这将返回一个基本上是表中修改的最后一行的id。 帮助不大? PS这是在Oracle11g中。 我目前正在使用MERGE将行插入表中,并使用此方法获取最后一个upserted行的id。 如果你对此有任何建设性的批评(可能有另一种解决方案),我会全力以赴。 我已经阅读了很多关于为什么这是好/坏的论点。 我将在c#中调用此过程,所以其他任何提示都值得赞赏。

与Oracle的连接通过控制台应用程序工作,不能通过Web服务工作

我无法通过asmx Web服务连接到Oracle模式,而不是通过控制台应用程序[x86]。 代码: var conn = new OracleConnection(“Data Source=xe;User ID=mySchema;Password=myPass”); 例外: ORA-12154: TNS:could not resolve the connect identifier specified 环境:Windows 7 x64 – VS 2008。 任何的想法? 请您提供任何额外信息 提前致谢。

C#DataTable到Oracle存储过程

我需要做的是将C#DataTable传递给Oracle存储过程。 这是我做的: 甲骨文方面: 创建了一个类型: 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; 创建了一个存储过程 create or replace PROCEDURE SP_TEST ( P_TABLE_IN IN CUSTOM_TYPE_ARRAY, P_RESULT_OUT OUT SYS_REFCURSOR ) AS –P_TABLE_IN CUSTOM_TYPE_ARRAY; BEGIN OPEN P_RESULT_OUT FOR SELECT attribute1, attribute2 FROM TABLE(P_TABLE_IN); END SP_TEST; […]

entity framework生成short而不是int

我们正在为我们的Oracle数据库使用Entity Framework数据库。 由于某种原因, Number(5)变为Int16 – short 最大Number(5)值为99999 Max Int16值为32767 问题…有没有办法指示映射器将Number(5)为int32 ?

c#datatypes – > oracle数据类型

我喜欢在Oracle数据库中保存不同的c#数据类型(int,decimal,double,string,Guid,…)。 有没有人有一个表格显示要使用的oracle数据类型? 我找到了表格,显示了用于不同oracle数据类型的c#数据类型,但不是相反。

Oracle ManagedDataAccess.EntityFramework Database.SqlQuery绑定参数的位置?

我有以下代码: var query = Database.SqlQuery(@” SELECT CASE WHEN EXISTS ( SELECT 1 FROM v$session v, UsersXxxx u WHERE v.Client_Info LIKE u.UserName || ‘;%’ AND v.UserName = :schemaName AND u.SchemaName = :schemaName AND v.module = ‘XXXX.exe’ AND u.UserKey = :userKey) THEN 1 ELSE 0 END AS LoggedIn FROM DUAL”, new OracleParameter(“schemaName”, schemaName), new OracleParameter(“userKey”, userKey)); return […]

GetOracleDecimal内存泄漏

@GilShalit 一年前发表评论 : “好吧,我们在GetOracleDecimal中对内存泄漏(我们提供给客户的代码)进行了一年多的打击后,我们已经开始不信任ODP(.Net 2.0)了……祝你好运!” – GilShalit 09年8月27日12:44 你是怎么解决的? 我们有一个服务,每隔几分钟查询一次没有释放内存的Oracle数据库; 在使用WinDbg进行一些调查之后,我发现这个类型正在最终化队列中堆积:Oracle.DataAccess.Types.OpoDecCtx。 以下是我认为问题的界限: decimal volume = (decimal)OracleDecimal.SetPrecision(reader.GetOracleDecimal(5), 28); 我评论了这一点,内存泄漏消失了。 任何想法将不胜感激 – 谢谢!

C#和Oracle Number数据类型

我需要从Oracle数据库中读取一个值,并且该字段已声明为Number(38)。 我怎么能用C#做这个,因为Decimal类型不够大?

oracle odp.net SafeMapping转换,如果有时区的时间戳 – 如何获取偏移而不是区域名称

从c#开始,使用odp.net,我调用一个返回游标的oracle函数。 某些列的类型为“带时区的时间戳”(TSTZ)。 如果我直接使用OracleDataAdapter ,那些列将转换为System.DateTime,并且时区信息将丢失。 这是预期的行为,建议似乎是使用SafeMapping强制转换为字符串,如: dataAdapter.SafeMapping.Add(“column_name”, typeof(string)); 然后我确实将TSTZ作为一个字符串,但它使用的格式为DD-MON-YYYY HH:MI:SS.FF AM TZR如下: 23-NOV-12 08.10.12.057868000 PM ASIA/CALCUTTA 我想要它而不是偏移(例如格式为DD-MON-YYYY HH:MI:SS.FF AM TZH:TZD如: 23-NOV-12 08.10.12.057868000 PM +04:30 当我直接查询oracle(比如在Sql Developer中)时,我可以使用 Alter Session Set Nls_Timestamp_Tz_Format=’DD-MON-YYYY HH:MI:SS.FF AM TZH:TZM’ 获得我想要的格式。 使用odp.net我尝试在SetSessionInfo中设置格式: connection.Open(); OracleGlobalization glob = connection.GetSessionInfo(); glob.TimeStampTZFormat = “DD-MON-YYYY HH:MI:SS.FF AM TZH:TZM”; connection.SetSessionInfo(glob); 以及使用相同的连接执行alter session命令,但都没有任何效果。 我认为这是因为转换为字符串发生在稍后阶段,连接设置无效。 有没有其他方法可以让odp.net直接为我提供偏移量? 我无法更改oracle db函数,因此在方法中使用例如tz_offset不是一个选项。 如果这不可能,那么将时区字符串转换为偏移量的最佳方法是什么? 我正在考虑执行一个 select […]

Microsoft-IIS / 8.5,Oracle输出变量被截断

OracleConnection connection = DBHelper.OracleConnection; OracleCommand OraCommand = connection.CreateCommand(); OraCommand.CommandText = “AUTHENTICATION.Authenticate”; OraCommand.CommandType = CommandType.StoredProcedure; int zero = 0; OracleParameter newParam = null; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter(“Authenticated”, OracleType.VarChar); newParam.Direction = ParameterDirection.Output; newParam.Size = 4000; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter(“Message”, OracleType.VarChar); newParam.Direction = ParameterDirection.Output; newParam.Size = 4000; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter(“Response”, OracleType.VarChar); newParam.Direction = ParameterDirection.Output; […]