OracleConnection conn = new OracleConnection();
conn.ConnectionString = @"Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.206.0.23)(PORT = 1521)))(CONNECT_DATA = (SID = ORCLWEX3)));User Id= RAMNIVAS_CI;Password= RAMNIVAS_CI;";
conn.Open();
SetStatus(null, "CLEARING CI DATABASE");
OracleCommand com = new OracleCommand(@"set pages 0
set lines 80
spool c:\delete_objects_CI
select 'drop '||object_type||' '||object_name||';'
from user_objects;
spool off
start c:\delete_objects_CI.lst
purge recyclebin;
set pages 100", conn);
com.ExecuteNonQuery();
我想在我尝试执行的查询中存在一些问题。
答案 0 :(得分:1)
您无法使用Oracle客户端执行SQL * plus命令。 SQL * plus命令仅受SQL * plus和SQL Developer等一些Oracle工具支持。
您的代码基本上遍历当前用户的所有对象,然后删除它们。您应该能够通过循环实现相同的目标:
OracleCommand userObjCmd = new OracleCommand("select object_type, object_name from user_objects", conn);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
OracleCommand dropCmd = new OracleCommand(
String.Format(@"execute immedidate 'drop {0} \"{1}\"'",
reader.GetValue(0), reader.GetValue(1)),
conn);
dropCmd.ExecuteNonQuery();
}
您需要添加一些代码才能正确关闭命令和读取器实例以及处理错误。
你可能需要静默地丢弃错误并尝试多次重复上面的代码,直到所有对象都被成功删除,因为只要其他对象依赖它就会丢弃一些对象。
答案 1 :(得分:0)
您正尝试通过驱动程序执行SQL * Plus命令。我不认为这可以做到。