我正在尝试编写一个oracle查询,客户端已请求输出的特定列名。很简单,我使用双引号使用oracle column alias编写查询。 (请注意,我使用的是引号,因为它恰好是请求的列名是保留字。)
问题是当我尝试使用以下代码执行查询时,我收到错误ORA-00911: invalid character
:
OracleCommand command = new OracleCommand(sqlquery, connection.Conn);
dt.Load(command.ExecuteReader());
我已经尝试了oracle quote operator和c# string literal的各种迭代(即@“这是”“测试”“文字”和“这是”测试\“文字”)
查询很简单,我想这样做:
select column1 as "alias1" from dual;
当我直接在Oracle中运行它时,这是有效的,但我无法通过.Net应用程序运行它。转义双引号并在调试器中查看查询后,表明它已格式化为:
select column1 as \"alias1\" from dual;
似乎很明显?反斜杠导致Oracle错误,但我该如何解决这个问题?
答案 0 :(得分:1)
哇。差不多一个小时后,我发现了一些愚蠢的事。让这成为对你们其他人的警告。 Don't leave the semicolon in the string literal for your query
换句话说,这很好......
string query = @“select column1 as”“alias1”“from dual”;
......但这不是......
string query = @“选择column1为”“alias1”“来自双 ;
”;
请注意第二个示例中添加了少量 ;
。
我希望这可以帮助别人节省一些时间。