2017-04-27 73 views
1

我加入p_used如下如何發送空間「」作爲參數值,其中通過.NET

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; 
     } 

當閱讀器運行命令,它會讀取行參數從句連接MSSQL數據庫時的Oracle SQL來自.net代碼,但從.net代碼連接到oracle數據庫時不會獲取reult。

+0

_where @p_usage =「」_是錯誤的。您不能使用參數來指定字段名稱。請顯示您的問題的[MCVE] – Steve

+0

@Steve,等號運算符的左側不一定是字段名稱。它可以是任何表達式,包括從參數中替換的文字。 –

回答

0

在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 = ' '; 
相關問題