如何通过 .net 将空格" "作为参数值发送到 oracle sql where 子句



我正在添加参数p_used,如下

public Getdet (PKey key)
        {
            StringBuilder sql = new StringBuilder();
            sql.Append("SELECT  label ");
            sql.Append(" From table  ");
            sql.Append(" Where used = @p_usage");

            DbAccess mDb = ApplicationContext.CurrentDb;
            Getdet result = null;
            using (IDbCommand cmd = mDb.GetCommand(sql.ToString()))
            {
                cmd.CommandType = CommandType.Text;
                mDb.AddParameter(cmd, "p_used", " ");
                using (IDataReader rdr = mDb.ExecuteReader(cmd))
                {
                        if (rdr.Read())
                        {
                            result = this.LoadThis(rdr);
                        }
                }
            }
            return result;
        }

当读取器执行命令时,从.NET代码连接到MSSQL数据库时会捕获行,但是从.NET代码连接到Oracle数据库时不会获取Reult。

Oracle "中的双引号用于围绕病例敏感的列(或对象(标识符。单个'引号用于文本文字。

因此,如果您打算从具有单个空格字符的列中选择,则是这样的名称:

CREATE TABLE table_name ( " " NUMBER );
INSERT INTO table_name ( " " ) VALUES ( 1 );

然后使用:

select * from table_name where @p_usage = " ";

它要将其与文字进行比较,然后您需要使用:

select * from table_name where @p_usage = ' ';

最新更新