c# - OracleCommand 并不总是尊重 SchemaOnly
问题描述
对于 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();
我在 OracleClient 文档上找不到太多关于 CommandBehavior 的信息。OracleClient 是否实现此选项?或者我应该使用不同的方式在不运行查询的情况下获取架构?
解决方案
这里的问题是SchemaOnly
调用SET FMTONLY ON
,它是一个 SQL Server TSQL 命令。
查询仅返回列信息。使用 SchemaOnly 时,用于 SQL Server 的 .NET Framework 数据提供程序在使用 SET FMTONLY ON 执行的语句之前。
使用它在OracleCommandBehavior
上不起作用,您需要找到另一种方法。
也许这个先前提出的问题可以提供帮助:
推荐阅读
- mysql - SQL 将输出限制为多个结果
- angular - 从版本 2.9.2 更新到 3.7.5 后出现打字稿错误
- android - 如何动态更改底部导航项文本?
- css - 带有滚动角的粘性侧边栏
- go - 为什么golang对字节切片使用括号,对字符串切片使用括号?
- elasticsearch - 在 Kibana 中可视化 Kafka 日志
- javascript - 如何访问json数据(嵌套数组)
- android - 适用于 android 的 AWS sdk:如何更改主机端点
- r - constrOptim 初始值
- javascript - 如何将 svgEdit 文件转换为 React 组件?