我将表名称用作参数化查询,出错。代码如下:
 
public  System.Data.DataTable  GetContextByBH()  
                       {  
                                   string  sSql  =  "SELECT  *  FROM  :p_BHBNAME";  
 
 
                                   OracleParameter  p1  =  new  OracleParameter("p_BHBNAME",OracleType.VarChar,20);  
                                   p1.Value  =  "BHFYLB";  
 
                                   OracleConnection  con  =  new  OracleConnection(FundsManage.Common.FundsManageConfiguration.ConnectionString);  
                                   con.Open();  
                                   OracleCommand  cmd  =  new  OracleCommand(sSql,con);  
 
                                   cmd.Parameters.Add(p1);  
 
                                   OracleDataAdapter  da  =  new  OracleDataAdapter(cmd);  
                                   DataSet  ds  =  new  DataSet();  
 
                                   //fill  the  DataSet  using  default  values  for  DataTable  names,  etc.  
                                   da.Fill(ds);  
                                     
                                   return  ds.Tables[0];  
                       }  
 System.Data.OracleClient.OracleException:  ORA-00903:  无效表名    
 
请问是不是不能够在参数化Sql语句中把表名作为参数?还是有什么其他解决方法?

解决方案 »

  1.   

    string  sSql  =  "SELECT * FROM p_BHBNAME=@p_BHBNAME"; 这样不就可以了
      

  2.   

    string  sSql  =  "SELECT * FROM p_BHBNAME=@p_BHBNAME"; 这样不行,第一,Oracle中参数用 : 表示,如:P_BHBNAME
             第二,表名不能参数化。楼主,想别的办法吧。比如:
    string tableName;
    string  sSql  =  "SELECT  *  FROM  " + tableName;
    tableName = "BHFYLB";