有构建select语句的过程,例如
public void GetLog(DataSet dataSet, string tableName, string userCase){
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
tmpSql = @"select * from table1 t1
join table2 on t1.key=t2.key
where 1=1 and "+userCase
cmd.CommandType = CommandType.Text;
adapter = new OracleDataAdapter(cmd);
adapter.SelectCommand = cmd;
adapter.Fill(dataSet, tableName);
}
两个表都构成一个列,例如“NAME”,当userCase类似于“name ='BLABLA'”时,我有异常“ora-00918列模糊定义”。我想将表名添加到userCase中。我如何获取信息哪个表包含此列以将其添加到var userCase“table1.name ='BLABLA'”。 userCase可以包含table1或table2中的任何列。我需要更改过程,以便通过sql或表名
获取元数据答案 0 :(得分:1)
好像你已经将tableName作为Method参数传递。如果这是包含来自userCase的列的表,那么您可以编写如下内容:
tmpSql = @"select * from table1 t1
在t1.key = t2.key上加入tablet2 其中1 = 1和" + tableName +"。" + userCase
如果你在多个表中有相同名称的列,那么计算机无法知道你的意思,除非你指定它(通过将其作为userCase的一部分传递,或者像它一样连接它)如上所示)。如果列在单个表中,那么您无需担心。
此致
答案 1 :(得分:0)
需要更改像
这样的sqltmpSql = @"select * from (select t1.key as t1_key,t2.key as t2_key, t1.name as t1_name,t2.name as t2_name..... from table1 t1
join table2 on t1.key=t2.key )
where t2_name='...'
并且条件userCase应该基于别名