मुझे लगता है कि आप sqlCom.ExecuteNonQuery(); . को याद कर रहे हैं
साथ ही, दोहरी से func_test(7) चुनें; . चलाने के बजाय फ़ंक्शन को चलाने और परम में पास करने के लिए इसे स्विच करने देता है
OracleConnection oracleCon = new OracleConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
// Set the command
string anonymous_block = "begin " +
" :refcursor1 := func_test(7) ;" +
"end;";
//fill in your function and variables via the above example
OracleCommand sqlCom= con.CreateCommand();
sqlCom.CommandText = anonymous_block;
// Bind
sqlCom.Parameters.Add("refcursor1", OracleDbType.RefCursor);
sqlCom.Parameters[0].Direction = ParameterDirection.ReturnValue;
try
{
// Execute command; Have the parameters populated
sqlCom.ExecuteNonQuery();
// Create the OracleDataAdapter
OracleDataAdapter da = new OracleDataAdapter(sqlCom);
// Populate a DataSet with refcursor1.
DataSet ds = new DataSet();
da.Fill(ds, "refcursor1", (OracleRefCursor)(sqlCom.Parameters["refcursor1"].Value));
// Print out the field count the REF Cursor
Console.WriteLine("Field count: " + ds.Tables["refcursor1"].Columns.Count);
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
}
finally
{
// Dispose OracleCommand object
cmd.Dispose();
// Close and Dispose OracleConnection object
con.Close();
con.Dispose();}
यह उदाहरण ओडीपी पर आधारित है जिसे @ %ora_home%\Client_1\ODP.NET\samples\RefCursor\Sample5.csproj
पाया जा सकता हैयदि आप प्रत्येक खरीद/फ़ंक्शन कॉल के लिए कस्टम निर्मित परम संग्रह से बचना चाहते हैं (बेहतर या खराब!) यह तकनीक। यहाँ एक अच्छा ब्लॉग है (मार्क विलियम्स के अलावा कोई नहीं) इस तकनीक को दिखा रहा है।http://oradim.blogspot.com/2007/04/odpnet-tip-anonymous-plsql-and.html