【问题标题】:Oracle.DataAccess.Client.OracleException: ORA-00936: missing expressionOracle.DataAccess.Client.OracleException: ORA-00936: 缺少表达式
【发布时间】:2016-11-04 14:29:43
【问题描述】:

我写了一个 C# 控制台程序来尝试从 Oracle 查询一些数据,这是一个非常简单的查询,但我不知道为什么它在运行时总是告诉我“缺少表达式”,请参见下面的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using System.Configuration;

namespace ConnectToOracle
{
    class Program
    {
        static void Main(string[] args)
        {

            string strCon = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

            using (OracleConnection oc = new OracleConnection(strCon))
            {
                OracleCommand cmd = new OracleCommand("select dname from dept where deptno = @deptno", oc);
                OracleParameter op = new OracleParameter();
                op.ParameterName = "@deptno";
                op.OracleDbType = OracleDbType.Int32;
                op.Direction = System.Data.ParameterDirection.Input;

                cmd.Parameters.Add(op);
                oc.Open();
                string dname = (string)cmd.ExecuteScalar();
           }
        }
    }
}

所以,在最后一行,cmd.ExecuteScalar() 方法会抛出错误“缺少表达式”,谁能告诉我为什么?我一头雾水

提前致谢!

【问题讨论】:

    标签: c# oracle ado.net


    【解决方案1】:

    使用: 而不是@

     OracleCommand cmd = new OracleCommand("select dname from dept where deptno = :deptno", oc);
                    OracleParameter op = new OracleParameter();
                    op.ParameterName = "deptno";
                    op.OracleDbType = OracleDbType.Int32;
                    op.Direction = System.Data.ParameterDirection.Input;
    

    参考:OracleCommand.Parameters Property

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多