我没有使用Oracle的经验,并且正在使用Oracle XE来测试我的代码。
我遇到了一个小问题。希望得到一些帮助。
好吧,我正在尝试构建一个跨数据库平台应用程序,我需要动态生成SELECT语句。除了甲骨文,甲骨文希望列名在引号中,否则我开始得到"无效标识符"错误。
例如,下面的语句对我不起作用,但是如果我将firstname放在引号中,它就可以工作。
SELECT firstname
FROM
"emp"
然而,这有效
SELECT "firstname"
FROM
"emp"
现在回到我正在处理的代码片段。
var sourceBuilder = new StringBuilder();
if (sourceType == DataSource.OracleServer)
{
sourceBuilder.Append("SELECT ")
.Append(String.Join(", ", (mappedColumnsList.Select(x => x.Key))))
.Append(" FROM ").Append(sourceAttribute);
}
else
sourceBuilder.Append("SELECT ")
.Append(String.Join(", ", mappedColumnsList.Select(x => x.Key)))
.Append(" FROM ").Append(sourceAttribute);
现在,当sourceType为Oracle时,我需要在我的字典展平位置添加双引号。
我尝试使用
sourceBuilder.Append("SELECT ")
.Append(String.Join(", ", string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\"")))
.Append(" FROM ").Append(sourceAttribute);
但显然,这不起作用。
答案 0 :(得分:3)
您想要更改此内容:
string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\"")
要:
mappedColumnsList.Select(x => "\"" + x.Key + "\"")