2012-01-16 14 views
0

C#から(Oracle)プロシージャをコールしたいと考えています。マイコード:C#のOracleCommand SQL呼び出しプロシージャ

try 
{ 
    OracleConnection myOracleConnection = new OracleConnection(connectionString); 
    myOracleConnection.Open(); 
    OracleCommand command = myOracleConnection.CreateCommand(); 
    command.CommandText = String.Format("BEGIN MISSINGTABLES ('{0}', '{1}'); END;", "PEKA_ERP_001", "ASE_ERP_001"); 
    command.CommandType = System.Data.CommandType.Text; 
    command.ExecuteNonQuery(); 
    myOracleConnection.Close(); 
} 
catch (OracleException e) 
{ 
    throw e; 
} 
catch (Exception e) 
{ 
    throw e; 
} 

手順:command.ExecuteNonQuery();

CREATE OR REPLACE PROCEDURE MISSINGTABLES (S1 IN VARCHAR2, S2 IN VARCHAR2) AS 
BEGIN [...] 

私は例外を取得します..:

PL/SQL: Statement ignored 
OracleException Unhandled 

私が間違ってやっていますか?

+1

は、なぜあなたは、[パラメータ](http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleparameterを使用していない文字列を連結しています.aspx)? – Oded

+0

私は本当に知らないので、どのように私はパラメータを使用します。あなたは - > BEGIN ... ENDステートメントの間にそれらが必要であることがわかります。プレースホルダをする方法..? – eMi

+0

ウェブ上に_many_チュートリアルがあります。質問する前に検索しましたか? – Oded

答えて

1

はそれをやった:)

OracleCommand command = myOracleConnection.CreateCommand(); 
command.CommandText = "MISSINGTABLES"; 
command.Parameters.Add(new OracleParameter("S1", OracleType.VarChar)).Value = "PEKA_ERP_001"; 
command.Parameters.Add(new OracleParameter("S2", OracleType.VarChar)).Value = "ASE_ERP_001"; 
command.CommandType = System.Data.CommandType.StoredProcedure; 
command.ExecuteNonQuery(); 
myOracleConnection.Close(); 
関連する問題