我正在尝试构建一个测试环境来测试针对 oracle 和 sql server 的应用程序。目的是为两个测试场景提供相同的代码库,唯一的区别应该是存储在脚本文件中的一些 SQL/DDL/... 语句。问题是oracle的ODP不支持脚本的执行,只支持单个命令。
我找到了一种解决方法,但仍有一个问题我无法解决:
我的 Oracle Drop 脚本如下所示:
BEGIN EXECUTE IMMEDIATE 'SELECT ''DROP TABLE '' || table_name || '' CASCADE CONSTRAINTS;'' FROM user_tables'; EXECUTE IMMEDIATE 'SELECT ''DROP SEQUENCE '' || sequence_name || '';'' FROM user_sequences;'; END[;]
问题是 END 之后的最后一个分号:
如果我没有在末尾提供分号,oracle 数据库会抱怨:
ORA-06550: line 1, column 208:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
; <an identifier> <a double-quoted delimited-identifier>
The symbol ";" was substituted for "end-of-file" to continue.)
如果我提供分号,我会收到 oracle ODP .Net 命令对象引发的异常:
ORA-00911: invalid character
ORA-06512: at line 1
有没有办法同时满足 oracle 数据库和 ODP .Net?