c# - 使用 ODP.NET 从 Oracle 存储过程获取日期值

标签 c# wpf oracle date odp.net

我希望这是一个简单的,因为这是我的第一个使用 Oracle 11g(版本 11.2)的 WPF。应用程序。

我能够从 WPF 应用程序代码调用 Oracle 存储过程并检索输出(整数和字符串)参数,但是当我尝试检索日期值时,我只得到以下值 01/01/0001 00:00:00 这表明实际上并未返回日期?

该存储过程在 Oracle 中运行良好,即它返回日期。

这是我的代码:

string sql = "pkge_intautotest.ScheduleNextRun";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.BindByName = true;
cmd.CommandType = System.Data.CommandType.StoredProcedure;

DateTime outSchedDateTime;
cmd.Parameters.Add("outSchedDateTime", OracleDbType.Date, ParameterDirection.Output);

cmd.ExecuteNonQuery();

//Get the values output by the stored procedure
outSchedDateTime = (DateTime)cmd.Parameters["outSchedDateTime"].Value;

conn.Close();
conn.Dispose();

这是我的(简化的)存储过程:

PROCEDURE ScheduleNextRun (inIntno NUMBER, outCaseno OUT NUMBER, outSchedDateTime OUT DATE ) AS
BEGIN
    DECLARE
        sched_datetime DATE;
        init_diary_id DIARY.ID%TYPE;
        v_proceed PLS_INTEGER;

    BEGIN
        -- Get the schedule time for 4 minutes from now
        SELECT TO_DATE(SYSDATE + 4/(24*60)) INTO sched_datetime FROM dual;
        outSchedDateTime := sched_datetime;

    END;
END ScheduleNextRun;

我会继续关注这个问题,但你知道我做错了什么吗?

最佳答案

现在可以使用了。

在我的存储过程中,我必须更改以下行:

SELECT TO_DATE(SYSDATE + 4/(24*60)) INTO sched_datetime FROM dual;

至以下内容:

SELECT SYSDATE + 4/(24*60) INTO sched_datetime FROM dual;

然后按照 JMK 的建议,在我的 .NET 代码中我必须更改:

cmd.Parameters.Add("outSchedDateTime", OracleDbType.Date, ParameterDirection.Output);

至以下内容:

cmd.Parameters.Add("outSchedDateTime", OracleDbType.TimeStamp, ParameterDirection.Output);

现在在我的 WPF 应用程序中,我可以看到日期和时间部分。我希望这会有所帮助。

关于c# - 使用 ODP.NET 从 Oracle 存储过程获取日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122849/

相关文章:

c# - 使用 SteamVR 交互系统时如何获取 Controller 输入

c# - Pinvoke DeviceIoControl 参数

c# - UserControl 依赖属性设计时

c# - 通过 ViewModel 验证模型

oracle - 如何在 Oracle forms fmb 文件中搜索 PL/SQL 代码?

oracle - 查询适用于 oracle 12c 但不适用于 11g

c# - 如何从旧的 asp.net 成员资格创建用户到新的 MVC .net 并发送密码重置

c# - 用 linq 查询 ilist

WPF数据网格问题

windows - SQL 加载程序 : writing batch file (windows) for processing multiple data file