Я использую этот вид кода для MySQL, SQL Server и Oracle.Для MySQL и SQL Server это работает просто отлично.Когда речь идет об Oracle, при выполнении adapter.Fill(dataset);
выдается исключение "ORA-00936".Кто-нибудь знает, почему это происходит?
Сообщение об ошибке:
ORA-00936: отсутствует выражение при заполнении набора данных в OracleDataAdapter
MySQL-запрос:
sqlQuery: "SELECT * FROM \"DWSYS\" WHERE NOT FCVERSION=@Version"
Код C #:
public class OutputOracleQuery : IWriteSQLQuery
{
private static readonly ILogger logger = LoggerFactory.Create(typeof(OutputOracleQuery));
HelperEnvironmentVariable GetEnvironmentVariable = new HelperEnvironmentVariable();
public DataSet GetData(string DBUser, string DBUserPassword, string sqlQuery, string databaseName, Version version)
{
using (OracleConnection connection = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + GetEnvironmentVariable.MachineName + ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))); User Id=" + DBUser + ";Password=" + DBUserPassword + ";"))
{
try
{
using (var command = new OracleCommand(sqlQuery, connection))
{
connection.Open();
command.Parameters.Add("@Version", version.ToString());
OracleDataAdapter adapter = new OracleDataAdapter(command);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset;
}
}
catch (OracleException ex)
{
logger.Debug("Demanded Database action for the database " + "\"" + databaseName + "\"" + " could not be executed", ex);
throw;
}
finally
{
connection.Close();
}
}
}
}