对于SqlClient,我能够为许多查询指定CommandBehavior.SchemaOnly,以获得查询结果模式。但是,当对Oracle使用相同的命令行为时,OracleClient似乎会执行查询,而不仅仅是获取模式。在下面的示例中,我可以看到该行确实被插入到我的数据库中,而我只是希望运行一个仅模式查询:
OracleCommand command = connection.CreateCommand();
command.CommandText = "insert into Test (ID, Name) values (1, 'test')";
var reader = command.ExecuteReader(CommandBehavior.SchemaOnly);
var dataTable = reader.GetSchemaTable();我在有关CommandBehavior的OracleClient文档中找不到太多信息。OracleClient是否实现此选项?或者,我应该使用不同的方法来获取模式,而不运行查询吗?
发布于 2020-07-17 13:50:43
这里的问题是SchemaOnly调用SET FMTONLY ON,这是一个SQL Server TSQL命令。
查询仅返回列信息。使用SchemaOnly时,SQL Server的.NET框架数据访问接口位于正在执行的语句之前,且SET FMTONLY为ON。
使用这个CommandBehavior在Oracle上是行不通的,你需要找到另一种方法。
也许之前问过的这个问题可以有所帮助:
https://stackoverflow.com/questions/62947784
复制相似问题