I unten Funktionwie Parameter von C# oracle Funktion zu übergeben
CREATE OR REPLACE FUNCTION F_INSERT_ORDER_DATA ( P_CUSTOMER_ID IN NUMBER,
P_NOTES IN VARCHAR2,
P_CREATED_BY IN VARCHAR2)
RETURN NUMBER
IS
vCREATED_ON DATE := SYSDATE;
vORDER_ID NUMBER;
BEGIN
INSERT INTO orders (ORDER_ID,
CUSTOMER_ID,
NOTES,
CREATED_BY,
CREATED_ON)
VALUES (NULL, --ORDER_ID Filled by trigger
P_CUSTOMER_ID, --CUSTOMER_ID
P_NOTES, --NOTES
P_CREATED_BY, --CREATED_BY
vCREATED_ON) --CREATED_ON
RETURNING ORDER_ID INTO vORDER_ID;
RETURN (vORDER_ID);
END;
aber ich bin immer Fehler in meinem C# Programm bin ausführen, die ich null in CUSTOMER_ID Spalt einfügen kann nicht so die Fehler durch Übergabe von Parametern sind von C# zu Orakel-Funktion Ich brauche jemanden, der mir hilft, Parameter zu übergeben?
private void B_Insert_Click(object sender, EventArgs e)
{
if (PaidCash < TotalInv)
{
MessageBox.Show("paid amount less than cost", "be careful", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TB_PAID_CASH.BackColor = Color.Tomato;
TB_PAID_CASH.Focus();
return;
}
else if (Reminder < 0)
{
MessageBox.Show("zero value", "be careful", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TB_Discount.BackColor = Color.Tomato;
TB_Discount.Focus();
return;
}
else
{
Form_control("DataInserted");
string connstr = @"Data Source=orcl; User Id=admin; password=123123;";
string insertcmdtxt = @"F_INSERT_ORDER_DATA"; //~ F_INSERT_ORDER_DATA ~//
using (OracleConnection conn = new OracleConnection(connstr))
using (OracleCommand cmd = new OracleCommand(insertcmdtxt, conn))
{
try
{
conn.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = insertcmdtxt;
cmd.Parameters.Add(new OracleParameter("P_CUSTOMER_ID",TB_CUSTOMER_ID.Text));
cmd.Parameters.Add(new OracleParameter("P_NOTES", null));
cmd.Parameters.Add(new OracleParameter("P_CREATED_BY", "System"));
cmd.Parameters.Add(":vORDER_ID", OracleDbType.Int64, ParameterDirection.ReturnValue);
cmd.ExecuteNonQuery();
TB_INVOICE_ID.Text = (cmd.Parameters[":vORDER_ID"].Value).ToString();
}
catch (Exception EX)
{
MessageBox.Show(EX.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
}
}
Der Datentyp der customerID-Spalte in der Datenbank ist die Nummer aber ihr ist kein Zahl-Datentyp mit OracleDbType also tut das Verwenden von int64 Problem? – samer
Laut [dieser Seite auf MSDN] (https://msdn.microsoft.com/en-us/library/yk72thhd (v = vs.110) .aspx) haben Sie einen Dezimalwert. Seltsam für eine ID – Steve
Dies ist die Oracle-Dokumente auf DataType-Zuordnungen https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#ODPNT8300 – Steve