Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
日期时间格式错误,C#,Oracle_C#_Oracle_Datetime_Stored Procedures - Fatal编程技术网

日期时间格式错误,C#,Oracle

日期时间格式错误,C#,Oracle,c#,oracle,datetime,stored-procedures,C#,Oracle,Datetime,Stored Procedures,在我的应用程序中,我捕获了一个“时间戳”。这个时间戳稍后在调用存储过程时使用。目前,我得到了一个错误: ORA-01830:日期格式图片在转换整个输入之前结束 字符串ORA-06512:在第2行 我需要小时、分钟和秒,因为表中的列必须是唯一的 以下是我获得约会时间的方式: private void getDate() { conn.Open(); string query; query = "select to_char(sysd

在我的应用程序中,我捕获了一个“时间戳”。这个时间戳稍后在调用存储过程时使用。目前,我得到了一个错误:

ORA-01830:日期格式图片在转换整个输入之前结束 字符串ORA-06512:在第2行

我需要小时、分钟和秒,因为表中的列必须是唯一的

以下是我获得约会时间的方式:

private void getDate()
    {
        conn.Open();
        string query;
        query = "select to_char(sysdate, 'dd/mon/yyyy hh24:mi:ss') as CurrentTime from dual";
        OracleCommand cmd = new OracleCommand(query, conn);
        OracleDataReader dr = cmd.ExecuteReader();
        dr.Read();
        text = dr[0].ToString();
        dr.Close();
        conn.Close();
    }
这就是我所说的过程:

        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        conn.Open();
        OracleTransaction trans = conn.BeginTransaction();
        cmd.CommandTimeout = 0;
        cmd.CommandText = "dc.hhrcv_insert_intrnl_audit_scn";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("pn_pallet_id", OracleDbType.Number).Value = palletid;
        cmd.Parameters.Add("pn_emp_id_no", OracleDbType.Number).Value = empid;
        cmd.Parameters.Add("pd_intrnl_audit_scan_datetime", OracleDbType.VarChar).Value = text;
        cmd.Parameters.Add("pn_company_id_no", OracleDbType.VarChar).Value = companyIdNo2;
        cmd.Parameters.Add("pn_order_no", OracleDbType.Number).Value = orderNo2;
        cmd.Parameters.Add("pn_carton_code", OracleDbType.Number).Value = carton_Code2;
        cmd.Parameters.Add("pn_no_of_full_carton", OracleDbType.Number).Value = txtNoOfCartons.Text;
        cmd.Parameters.Add("pn_no_of_packs", OracleDbType.Number).Value = txtNoOfPacks.Text;
        cmd.Parameters.Add(new OracleParameter("pv_error", OracleDbType.VarChar));
        cmd.Parameters["pv_error"].Direction = ParameterDirection.Output;
        string pv_error;
        cmd.ExecuteNonQuery();
        pv_error = cmd.Parameters["pv_error"].Value.ToString();
        if (pv_error.ToString() == "")
        {
            trans.Commit();
            frmMsgAudit ms = new frmMsgAudit(empid,palletid,orderno,text);
            ms.Show();
            this.Hide();
        }
        else
        {
            trans.Rollback();
            MessageBox.Show("" + pv_error, "Error");
        }
        conn.Close();
在以下位置获取错误:

cmd.ExecuteNonQuery()

ORA-01830:日期格式图片在转换整个输入之前结束 字符串ORA-06512:在第2行

提前谢谢。

看起来这行是错的

 query = "select to_char(sysdate, 'dd/mon/yyyy hh24:mi:ss')
24
在这里做什么

尝试

query = "select to_char(sysdate, 'dd/mon/yyyy hh:mi:ss AM')

您试图输入日期值,但输入的日期不匹配 日期格式


编辑:由于A.B.Cade,
hh24
是一种有效的oracle格式,但我仍然相信您的
sysdate
格式和
'dd/mon/yyyyyyy h24:mi:ss'
是不同的格式。

谢谢您的快速回复

grrr。。我真的需要一步一步地坐下来走走!无论如何,这就是问题所在:

在存储过程中,我有:

...
begin
insert into dc_internal_audit_scan (pallet_id_no,
                                    internal_audit_scan_emp,
                                    internal_audit_scan_datetime,
                                    company_id_no,
                                    order_no,
                                    carton_code,
                                    no_of_full_cartons,
                                    no_of_packs,
                                    last_update_datetime,
                                    username)      
                            values (ln_pallet_id_no,
                                    pn_emp_id_no,
                                    **pd_intrnl_audit_scan_datetime,**
                                    pn_company_id_no,
                                    pn_order_no,
                                    pv_carton_code,
                                    pn_no_of_full_cartons,
                                    pn_no_of_packs,
                                    sysdate,
                                    lv_emp_username);
end; 
现在:

截止日期(pd国际审计扫描日期时间,'dd/mon/yyyy hh24:mi:ss')


谢谢

StredProcess中参数的数据类型是什么?varchar2?错误是否来自您的过程?如果是这样,请张贴您的程序代码也。实际上,如果您使用的是oracle 11.0.2.3或更高版本,我建议您使用entity framework。我认为这就是问题所在-oracle会根据
NLS\u date\u FORAMT
将字符串隐式转换为日期。(我已经做了,为什么不加上…)
...
begin
insert into dc_internal_audit_scan (pallet_id_no,
                                    internal_audit_scan_emp,
                                    internal_audit_scan_datetime,
                                    company_id_no,
                                    order_no,
                                    carton_code,
                                    no_of_full_cartons,
                                    no_of_packs,
                                    last_update_datetime,
                                    username)      
                            values (ln_pallet_id_no,
                                    pn_emp_id_no,
                                    **TO_DATE(pd_intrnl_audit_scan_datetime,'dd/mon/yyyy hh24:mi:ss'),**
                                    pn_company_id_no,
                                    pn_order_no,
                                    pv_carton_code,
                                    pn_no_of_full_cartons,
                                    pn_no_of_packs,
                                    sysdate,
                                    lv_emp_username);
end;