【问题标题】:ORA-00936: missing expression while using stringbuilderORA-00936: 使用 stringbuilder 时缺少表达式
【发布时间】:2016-09-08 19:53:42
【问题描述】:

我正在使用StringBuilderasp.net 中使用多个查询。但我收到错误

ORA-00936:缺少表达式

以下是我的查询。

StringBuilder sb = new StringBuilder();
if (ddlProject.SelectedValue != "0" && ddlBuilding.SelectedValue != "0")
{
    sb.Append("insert into xxacl_pN_LEASES_ALL_h  select sysdate,* from xxacl_pN_LEASES_ALL");
    sb.Append(";");
    sb.Append("update xxacl_pN_LEASES_ALL set ASSIGNED_TO = '" + ddlSalesUser.SelectedValue + "'");
    sb.Append(";");
}
if (ddlProject.SelectedValue != "0" && ddlBuilding.SelectedValue == "0")
{
    sb.Append("insert into xxacl_pN_LEASES_ALL_h  select sysdate,* from xxacl_pN_LEASES_ALL");
    sb.Append(";");
    sb.Append("update xxacl_pN_LEASES_ALL set ASSIGNED_TO = '" + ddlSalesUser.SelectedValue + "'");
    sb.Append(";");
}

OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
OracleCommand cmd1 = new OracleCommand();
string allQueries = sb.ToString();
cmd1.CommandText = allQueries;
cmd1.Connection = ObjPriCon;
ObjPriCon.Open();
cmd1.ExecuteNonQuery(); // here is the error caused
ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Record updated successfully');window.location ='FrmHoldingCoordinateUpdate.aspx?TranType=FM&PView=N&Mode=A&Redirect=oracle&Key=0&Redirect=" + Request.QueryString["Redirect"] + "&userid=" + Request.QueryString["userid"].ToString() + "';", true);

另外,allQueries 给出的结果为

insert into xxacl_pN_LEASES_ALL_h select getdate(),* from xxacl_pN_LEASES_ALL;update xxacl_pN_LEASES_ALL set ASSIGNED_TO = '5681';

【问题讨论】:

  • Oracle 是否支持 'GETDATE()'?
  • @ThomasSchremser:不,对不起我的错误,我会改变它。是这个错误吗?
  • 插入xxacl_pN_LEASES_ALL_h后是否应该有分号
  • @Mysterio11: 你能给出你所说的语法吗?
  • 我错了。但你到底想做什么?

标签: c# asp.net oracle stringbuilder


【解决方案1】:

* 之前的表名需要使用别名 例如:

insert into xxacl_pN_LEASES_ALL_h  select getdate(),t.* from xxacl_pN_LEASES_ALL t;

【讨论】:

  • 并且,为了澄清这个(正确的)答案:select * from... 有效,但如果您添加其他列,例如sysdate,则它不起作用。在这种情况下,您必须在 *. 之前使用表名(或别名)。
  • @mathguy:我像这样使用它insert into xxacl_pN_LEASES_ALL_h select sysdate,t.* from xxacl_pN_LEASES_ALL t,但得到错误 ORA-00911: invalid character
  • @mathguy:Surename 发布的答案对我不起作用
  • @nad:你能把插入和更新分开,作为两个不同的查询执行吗?我认为; 有问题您可以尝试删除update 查询,仅供测试。
  • @nad - 这是错误的,对 Surename 不公平。显然,他的回答确实有效,因为它清除了您的“缺少表达”错误。现在你有一个不同的错误——这意味着你的代码有很多问题,而不是一个。这不是 Surename 的错。责备那些为你的代码中的其他错误提供正确答案的志愿者不会在这个网站或任何其他网站上为你赢得很多朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多