Я использую формы в Visual Studio для создания приложения и последующего извлечения данных из базы данных Oracle.Все мои части работают, кроме получения данных для одного пользователя.Вот секция form.cs для этой части
private void getCustomerStringToolStripMenuItem_Click(object sender, EventArgs
e)
{
Getcuststring g = new Getcuststring();
g.Show();
}
Это мой частичный класс с именем getcuststring.cs
namespace Assignment
{
public partial class Getcuststring : Form
{
public Getcuststring()
{
InitializeComponent();
}
private void Getcuststring_Load(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Getting();
}
public void Getting()
{
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "Data Source=(DESCRIPTION =" + "(ADDRESS = (PROTOCOL = TCP)" +
"(HOST = *******)(PORT = 1521))" + "(CONNECT_DATA =" + "(SID = dms)));"
+ "User Id= *****;Password= ******;";
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "GET_CUST_STRING_FROM_DB";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pcustid", OracleDbType.Long).Value = textBox1.Text;
cmd.Parameters.Add("return_value", OracleDbType.Varchar2).Direction = ParameterDirection.ReturnValue;
try
{
cmd.ExecuteNonQuery();
// string result = string.Empty;
var result = cmd.Parameters["result_value"].Value.ToString();
MessageBox.Show(result);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
}
, все мои другие функции работают, но когдавыполняя это в visual studio, он каждый раз выдает исключение, говоря, что данные не найдены, тогда как этот идентификатор клиента присутствует в базе данных Oracle, но он как-то не показывает результат, а вместо этого вызывает исключение. Так вы можете сказать мне, где я не прав, почему он предоставляет мне исключение, говорящее, что данные не найдены, тогда как эти данные действительно существуют.
Это функция
CREATE OR REPLACE FUNCTION GET_CUST_STRING_FROM_DB(pcustid NUMBER) RETURN
VARCHAR2 AS
vcustid NUMBER;
vcustname VARCHAR2(255);
vcustsales NUMBER;
vcuststatus VARCHAR2(255);
BEGIN
SELECT CUSTID,CUSTNAME,SALES_YTD,STATUS INTO
vcustid,vcustname,vcustsales,vcuststatus
FROM CUSTOMER
WHERE CUSTID = pcustid;
RETURN 'CustID: ' || vcustid || ' Name: ' || vcustname || ' Status: ' ||
vcuststatus || ' SalesYTD: ' || vcustsales;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20021,'Customer ID not found');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000,SQLERRM);
END;