我想在 C# 中單擊時洗掉資料庫中的程序。
Sql檔案:EXP_DROP_PROCEDURES.sql
drop procedure EXP_NAMES;
drop procedure EXP_TYPS;
drop procedure EXP_CARS;
drop procedure EXP_SHIPS;
代碼 C#:
try
{
// Geht die SQL Skript in Basei
var statement = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory "\\" "sql" "\\" "EXP_DROP_PROCEDURES.sql");
using (OracleCommand cmd = new OracleCommand(statement, oraCon))
{
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我試過提交;在 EXP_DROP_PROCEDURES.sql 的末尾并且不帶分號。兩者都不起作用。它總是給我帶來例外 ORA-00933 - SQL 命令未正確結束。
uj5u.com熱心網友回復:
在 Oracle 中,一條命令只能包含一條陳述句。
您要么需要:
從檔案中讀取每一行并將它們作為單獨的命令運行(不帶尾隨分號);或者
將 SQL 陳述句包裝在 PL/SQL 匿名塊中(并使用,
EXECUTE IMMEDIATE因為您不能DROP直接在 PL/SQL 中使用陳述句):BEGIN EXECUTE IMMEDIATE 'DROP PROCEDURE EXP_NAMES'; EXECUTE IMMEDIATE 'DROP PROCEDURE EXP_TYPS'; EXECUTE IMMEDIATE 'DROP PROCEDURE EXP_CARS'; EXECUTE IMMEDIATE 'DROP PROCEDURE EXP_SHIPS'; END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361923.html
上一篇:如何將查詢結果存盤在陣列中?
