Below is code that I thought would run a function from asp.net passing it one argument, an id and return one number an integer
as well. I am able to call stored procedures from asp.net with code similar to below but those procedures added
a row of data to the table. I'm wondering is the procedure slightly different when you try to call a
function instead of a stored procedure. I would have thought not since people seem to assume that stored procedures
cover both stored procedures and functions. This is the error that I get when I try to call the function
Oracle.DataAccess.Client.OracleException ORA-06550: line 1, column 7: PLS-00221: 'COUNTROW' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored at Project1.xmlApp.GetInt(String[] aParams) in c:\inetpub\ 273 at Project1.xmlApp.btnRead_Click(Object sender, EventArgs e) in c:\inetpub\ 171
Any help is greatly appreciated.
namespace Project1
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class xmlApp: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
/**if(inFileLocation.Value == "")
{
btnRead.Enabled = false;
lblfileLoc.Visible = true;
}
if(inFileLocation.Value != "")
{
btnRead.Enabled = true;
lblfileLoc.Visible = false;
}
**/
lblErrors.Visible = false;
lblErrors2.Visible = false;
lblErrors3.Visible = false;
lblErrors4.Visible = false;
lblErrors5.Visible = false;
}
GetInt(arguments);
//****************************************************************
}//End of try block
catch(XmlException eff)
{
lblErrors4.Visible = true;
lblErrors4.Text ="File not validated"+"</br>" + eff.ToString();
}
catch (Exception eg)
{
lblErrors5.Visible = true;
lblErrors5.Text ="Please enter a file path"+"</br>"+ eg.ToString();
}
}//End of read method
/// <summary>
/// Method that is called to execute a stored procedure against the database and return a DataSet.
/// </summary>
/// <param name="aParams">A set or parameters to populate the command object.</param>
/// <returns>A dataset containing the results of the stored procedure.</returns>
///
public int GetInt(string[] aParams)
{
string sConn = GetConnString();
OracleConnection objConn = new OracleConnection(sConn);
OracleCommand objCmd;
int iResult;
try
{
PopulateCommand(aParams,out objCmd);
objCmd.Connection=objConn;
objConn.Open();
iResult = Convert.ToInt32(objCmd.ExecuteScalar().ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
objConn.Close();
}
return iResult;
}
//***********************************************************************************************
private void PopulateCommand(string[] aParams,out OracleCommand objCmd)
{
objCmd = new OracleCommand();
objCmd.CommandType=CommandType.StoredProcedure;
OracleParameter param;
for (int i=0;i< aParams.Length;i++)
{
String par = aParams;
if (i==0)
{
objCmd.CommandText= aParams[0];
Response.Write("<br>"+"<br>"+"<br>"+"<br>"+"<br>"+aParams[0]);
}//End if.
else
{
String args = aParams;
param = new OracleParameter(args,OracleDbType.Varchar2);
param.Direction = ParameterDirection.Input;
param.Value = args;
Response.Write("<br>"+"<br>"+"<br>"+"<br>"+"<br>"+param);
objCmd.Parameters.Add(param);
}//End else.
}//End for loop.
}//End PopulateCommand method.
//*************************************************************************************************
}
as well. I am able to call stored procedures from asp.net with code similar to below but those procedures added
a row of data to the table. I'm wondering is the procedure slightly different when you try to call a
function instead of a stored procedure. I would have thought not since people seem to assume that stored procedures
cover both stored procedures and functions. This is the error that I get when I try to call the function
Oracle.DataAccess.Client.OracleException ORA-06550: line 1, column 7: PLS-00221: 'COUNTROW' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored at Project1.xmlApp.GetInt(String[] aParams) in c:\inetpub\ 273 at Project1.xmlApp.btnRead_Click(Object sender, EventArgs e) in c:\inetpub\ 171
Any help is greatly appreciated.
namespace Project1
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class xmlApp: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
/**if(inFileLocation.Value == "")
{
btnRead.Enabled = false;
lblfileLoc.Visible = true;
}
if(inFileLocation.Value != "")
{
btnRead.Enabled = true;
lblfileLoc.Visible = false;
}
**/
lblErrors.Visible = false;
lblErrors2.Visible = false;
lblErrors3.Visible = false;
lblErrors4.Visible = false;
lblErrors5.Visible = false;
}
GetInt(arguments);
//****************************************************************
}//End of try block
catch(XmlException eff)
{
lblErrors4.Visible = true;
lblErrors4.Text ="File not validated"+"</br>" + eff.ToString();
}
catch (Exception eg)
{
lblErrors5.Visible = true;
lblErrors5.Text ="Please enter a file path"+"</br>"+ eg.ToString();
}
}//End of read method
/// <summary>
/// Method that is called to execute a stored procedure against the database and return a DataSet.
/// </summary>
/// <param name="aParams">A set or parameters to populate the command object.</param>
/// <returns>A dataset containing the results of the stored procedure.</returns>
///
public int GetInt(string[] aParams)
{
string sConn = GetConnString();
OracleConnection objConn = new OracleConnection(sConn);
OracleCommand objCmd;
int iResult;
try
{
PopulateCommand(aParams,out objCmd);
objCmd.Connection=objConn;
objConn.Open();
iResult = Convert.ToInt32(objCmd.ExecuteScalar().ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
objConn.Close();
}
return iResult;
}
//***********************************************************************************************
private void PopulateCommand(string[] aParams,out OracleCommand objCmd)
{
objCmd = new OracleCommand();
objCmd.CommandType=CommandType.StoredProcedure;
OracleParameter param;
for (int i=0;i< aParams.Length;i++)
{
String par = aParams;
if (i==0)
{
objCmd.CommandText= aParams[0];
Response.Write("<br>"+"<br>"+"<br>"+"<br>"+"<br>"+aParams[0]);
}//End if.
else
{
String args = aParams;
param = new OracleParameter(args,OracleDbType.Varchar2);
param.Direction = ParameterDirection.Input;
param.Value = args;
Response.Write("<br>"+"<br>"+"<br>"+"<br>"+"<br>"+param);
objCmd.Parameters.Add(param);
}//End else.
}//End for loop.
}//End PopulateCommand method.
//*************************************************************************************************
}