【发布时间】:2013-07-17 12:24:01
【问题描述】:
我想在 C# 中对 oracle 数据库进行一些编程模式操作。因此,我在一些基本问题上苦苦挣扎。
ddl sql 语句位于脚本文件中。我不想使用 sqlplus.exe,但我想使用 ODP.NET 程序集 (System.Oracle.DataAccess) 之外的 OracleCommand。这是我的脚本文件的示例:
脚本.sql:
DROP TABLE ABCDEF;
DROP TABLE GHIJKL;
我想指出:
- 脚本包含 DDL 语句(数据定义语言)
- 脚本包含空行
- 脚本包含多个语句
以下代码应该执行我的脚本:
var content = File.ReadAllText("script.sql");
using (var oracleConnection = new OracleConnection(_connectionString))
{
oracleConnection.Open();
using (var command = new OracleCommand(content) { Connection = oracleConnection })
{
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
}
执行此代码,我确实收到了一个 oracle 错误:
Oracle.DataAccess.Client.OracleException:ORA-00911:无效字符
我认为,语句的格式可能存在一些问题。任何提示表示赞赏。谢谢。
---编辑---
用一种简单的方式总结我的需求:我寻找一种方法来执行任何 sql/ddl 脚本,该脚本可由 SQL Plus 执行,使用 C# 以编程方式。
【问题讨论】:
-
更新:我试图用“DECLARE BEGIN EXECUTE IMMEDIATE '....' END;”来包装脚本的内容。因为这应该有助于 DDL 语句,但没有运气,同样的错误消息