0
我我的C#程序如何傳遞到Oracle的功能從C#參數
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;
,但我得到的是我不能插入空到CUSTOMER_ID列誤差範圍內執行以下功能,使 錯誤是由傳遞參數c#到oracle函數 我需要有人來幫助我通過傳遞參數?
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;
}
}
}
}
數據庫中customerID列的數據類型是數字但他們是不是與OracleDbType的數字數據類型,所以使用int64會遇到問題? – samer
根據[MSDN上的此頁面](https://msdn.microsoft.com/en-us/library/yk72thhd(v = vs.110).aspx),您有一個十進制值。怪異的ID – Steve
雖然這是DataType映射上的Oracle文檔https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#ODPNT8300 – Steve