Asp.net 查询有一些问题

Asp.net 查询有一些问题,asp.net,oracle,Asp.net,Oracle,当我在“代码打开”按钮中编写此查询时,单击以在xxacl\u pn\u new\u cha\u part\u h表中插入mkey 它给我错误的感觉 “ORA-00904:“A”:无效标识符” 这是我的密码:- try { conn.Open(); OracleDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { cmd.CommandTe

当我在“代码打开”按钮中编写此查询时,单击以在
xxacl\u pn\u new\u cha\u part\u h
表中插入
mkey
它给我错误的感觉

“ORA-00904:“A”:无效标识符”

这是我的密码:-

try
    {
        conn.Open();
        OracleDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            cmd.CommandText = "insert into xxacl_pn_new_cha_part_h select sysdate, a.* from xxacl_pn_new_cha_part where mkey= " + sdr[0].ToString();  // this query gives error
            cmd.ExecuteNonQuery();
            strQuery = "UPDATE xxacl_pn_new_cha_part set Rating='" + sdr[2].ToString() + "', RATING_UPDATE_DATE=convert(datetime,'" + System.DateTime.Now.ToString() + "',103) WHERE mkey = " + sdr[0].ToString();
            cmd.CommandText = strQuery;
            cmd.ExecuteNonQuery();
        }

        ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage", "alert('Broker rating updated succesfully');", true);

    }
我正在使用Oracle

更新

 protected void btnUpdate_Click(object sender, EventArgs e)
{
    OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConn"].ConnectionString);
    string strQuery = "SELECT distinct ab.mkey, ab.broker_id,CASE WHEN SYSDATE - la.creation_date <= 180 THEN 'A' WHEN SYSDATE - cef_dt <= 30 THEN " +
                       "'B' ELSE 'C'END rating FROM xxacl_pn_new_cha_part ab,xxacl_pn_lease_det ld,xxacl_pn_leases_all la, " +
                       "xxcus.xxacl_pn_customer_enquiry_v ce WHERE ab.broker_id = ld.broker_id(+) AND ld.booking_no = la.booking_no(+) " +
                       " AND ab.broker_id = ce.broker_id(+)";

    OracleCommand cmd = new OracleCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = strQuery;
    cmd.Connection = conn;
    try
    {
        conn.Open();
        OracleDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            cmd.CommandText = "insert into xxacl_pn_new_cha_part_h select sysdate, a.* from xxacl_pn_new_cha_part a where a.mkey= " + sdr[0].ToString();
            cmd.ExecuteNonQuery();
            strQuery = "UPDATE xxacl_pn_new_cha_part set Rating='" + sdr[2].ToString() + "', RATING_UPDATE_DATE=convert(datetime,'" + DateTime.Now.ToString() + "',103) WHERE mkey = " + sdr[0].ToString();
            cmd.CommandText = strQuery;
            cmd.ExecuteNonQuery();
        }

        ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage", "alert('Broker rating updated succesfully');", true);

    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        conn.Close();
        conn.Dispose();
    }
}
protectedvoidbtnupdate\u单击(对象发送方,事件参数e)
{
OracleConnection conn=新的OracleConnection(ConfigurationManager.ConnectionString[“OracleConn”].ConnectionString);

string strQuery=“SELECT distinct ab.mkey,ab.broker\u id,CASE WHEN SYSDATE-la.creation\u date如果此处缺少别名,请尝试此别名

cmd.CommandText = "insert into xxacl_pn_new_cha_part_h select sysdate, a.* from xxacl_pn_new_cha_part a where a.mkey= " + sdr[0].ToString(); 
更新:

 protected void btnUpdate_Click(object sender, EventArgs e)
{
    OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConn"].ConnectionString);
    string strQuery = "SELECT distinct ab.mkey, ab.broker_id,CASE WHEN SYSDATE - la.creation_date <= 180 THEN 'A' WHEN SYSDATE - cef_dt <= 30 THEN " +
                       "'B' ELSE 'C'END rating FROM xxacl_pn_new_cha_part ab,xxacl_pn_lease_det ld,xxacl_pn_leases_all la, " +
                       "xxcus.xxacl_pn_customer_enquiry_v ce WHERE ab.broker_id = ld.broker_id(+) AND ld.booking_no = la.booking_no(+) " +
                       " AND ab.broker_id = ce.broker_id(+)";

    OracleCommand cmd = new OracleCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = strQuery;
    cmd.Connection = conn;
    try
    {
        conn.Open();
        OracleDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            cmd.CommandText = "insert into xxacl_pn_new_cha_part_h select 0, sysdate, a.* from xxacl_pn_new_cha_part a where a.mkey= " + sdr[0].ToString();
            cmd.ExecuteNonQuery();
            strQuery = "UPDATE xxacl_pn_new_cha_part set Rating='" + sdr[2].ToString() + "', RATING_UPDATE_DATE=to_date('" + DateTime.Now.ToString() + "','dd-mm-yyyy hh:mi:ss am') WHERE mkey = " + sdr[0].ToString();
            cmd.CommandText = strQuery;
            cmd.ExecuteNonQuery();
        }

        ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage", "alert('Broker rating updated succesfully');", true);

    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        conn.Close();
        conn.Dispose();
    }
}
protectedvoidbtnupdate\u单击(对象发送方,事件参数e)
{
OracleConnection conn=新的OracleConnection(ConfigurationManager.ConnectionString[“OracleConn”].ConnectionString);

string strQuery=“选择distinct ab.mkey、ab.broker\u id、CASE WHEN SYSDATE-la.creation\u date缺少表的别名

 "insert into xxacl_pn_new_cha_part_h select sysdate, a.* from xxacl_pn_new_cha_part a where a.mkey= " + sdr[0].ToString();

现在得到的错误是
ORA-00947:值不够
这意味着
xxacl\u pn\u new\u cha\u part\u h
中的列数大于从
select sysdate,a..
返回的列数。请再次检查查询。@nadeem检查两个表xxacl\u pn\u new\u cha\u part\u h和xxacl\u pn\u new cha\u part\u che中的列数,以及che同时检查列数据类型。您能列出两个表中的列吗?xxacl_pn_new_cha_part_h和xxacl_pn_new_cha_part。如果前者有6列,后者有5列,sysdate和5列将构成6列,但如果xxacl_pn_new_cha_part中的列少于5列,您将永远不会拥有所有6列。添加后如果输入0和sysdate,则查询将是“insert into xxacl_pn_new_cha_part_h选择sysdate,a.*,0,sysdate from xxacl_pn_new_cha_part a,其中a.mkey=“+sdr[0].ToString();最好写列名而不是*\