Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.29 KB | None | 0 0
  1. string connstr = @"Data Source=orcl; User Id=user; password=pwd;";
  2. string insertcmdtxt = @"F_INS_ORDER_DATA";
  3.  
  4. using (OracleConnection conn = new OracleConnection(connstr))
  5. using (OracleCommand cmd = new OracleCommand(insertcmdtxt, conn))
  6. {
  7. try
  8. {
  9. conn.Open();
  10.  
  11. cmd.CommandType = CommandType.StoredProcedure;
  12.  
  13. cmd.CommandText = insertcmdtxt;
  14.  
  15. foreach (DataGridViewRow Row in DGV_INVOICE.Rows)
  16. {
  17. cmd.Parameters.Clear();
  18.  
  19. cmd.Parameters.Add(":vORDER_ID", OracleDbType.Int32, ParameterDirection.ReturnValue);
  20.  
  21. cmd.Parameters.Add(new OracleParameter(":P_CUSTOMER_ID", OracleDbType.Int32)).Value = TB_CUSTOMER_ID.Text;
  22. cmd.Parameters.Add(new OracleParameter(":P_ORDER_NOTE", OracleDbType.Varchar2)).Value = TB_ORDER_NOTE.Text;
  23.  
  24. cmd.Parameters.Add(new OracleParameter(":P_PRODUCT_ID", OracleDbType.Int32)).Value = Row.Cells[DGV_INVOICE.Columns["DGV_PRODUCT_ID"].Index].Value;
  25. cmd.Parameters.Add(new OracleParameter(":P_UNIT_PRICE", OracleDbType.Int32)).Value = Row.Cells[DGV_INVOICE.Columns["DGV_UNIT_PRICE"].Index].Value;
  26. cmd.Parameters.Add(new OracleParameter(":P_QUANTITY", OracleDbType.Int32)).Value = Row.Cells[DGV_INVOICE.Columns["DGV_QUANTITY"].Index].Value;
  27. cmd.Parameters.Add(new OracleParameter(":P_DISCOUNT", OracleDbType.Int32)).Value = Row.Cells[DGV_INVOICE.Columns["DGV_DISCOUNT"].Index].Value;
  28. cmd.Parameters.Add(new OracleParameter(":P_ORDER_STATUS", OracleDbType.Varchar2)).Value = '1';
  29. cmd.Parameters.Add(new OracleParameter(":P_ITEM_NOTE", OracleDbType.Varchar2)).Value = Row.Cells[DGV_INVOICE.Columns["DGV_ITEM_NOTE"].Index].Value;
  30.  
  31. cmd.ExecuteNonQuery();
  32. }
  33.  
  34. TB_INVOICE_ID.Text = (cmd.Parameters[":vORDER_ID"].Value).ToString();
  35. }
  36. catch (Exception EX)
  37. {
  38. MessageBox.Show(EX.Message, "حدث خطاء", MessageBoxButtons.OK, MessageBoxIcon.Error);
  39. return;
  40. }
  41. }
  42.  
  43. CREATE OR REPLACE FUNCTION F_INS_Order_Data (P_CUSTOMER_ID IN NUMBER,
  44. P_ORDER_NOTE IN VARCHAR2,
  45. P_PRODUCT_ID IN NUMBER,
  46. P_UNIT_PRICE IN NUMBER,
  47. P_QUANTITY IN NUMBER,
  48. P_DISCOUNT IN NUMBER,
  49. P_ORDER_STATUS IN VARCHAR2,
  50. P_ITEM_NOTE IN VARCHAR2)
  51. RETURN NUMBER
  52. IS
  53. VOrder_Id NUMBER; --ORDER_ID Filled by trigger
  54. vCreated_by VARCHAR2 (64) := 'SYSTEM';
  55. vCreated_On DATE := SYSDATE;
  56.  
  57. sql_stmt VARCHAR2 (4000);
  58. ERR_CODE VARCHAR2(64);
  59. ERR_MSG VARCHAR2(1024);
  60.  
  61. BEGIN
  62.  
  63. SAVEPOINT Setp1;
  64.  
  65. sql_stmt := 'INSERT INTO orders (ORDER_ID,
  66. CUSTOMER_ID,
  67. NOTES,
  68. CREATED_BY,
  69. CREATED_ON)
  70. VALUES (NULL, --ORDER_ID Filled by trigger
  71. :PCUSTOMER_ID, --CUSTOMER_ID
  72. :POrderNote, --NOTES
  73. :PCREATED_BY, --CREATED_BY
  74. :PCREATED_ON) --CREATED_ON
  75. RETURNING ORDER_ID INTO :vORDER_ID';
  76.  
  77. EXECUTE IMMEDIATE sql_stmt USING P_CUSTOMER_ID,
  78. P_ORDER_NOTE,
  79. vCreated_by,
  80. vCreated_ON
  81. RETURNING INTO vORDER_ID;
  82.  
  83. --DBMS_OUTPUT.PUT_LINE (sql_stmt); /* For Testing Purpose */
  84.  
  85.  
  86. sql_stmt:='INSERT INTO ORDER_DETAILS (ORDER_ID,
  87. PRODUCT_ID,
  88. UNIT_PRICE,
  89. QUANTITY,
  90. DISCOUNT,
  91. ORDER_STATUS,
  92. NOTES,
  93. CREATED_BY,
  94. CREATED_ON)
  95. VALUES ( :PvORDER_ID, --ORDER_ID,
  96. :PPRODUCT_ID, --PRODUCT_ID
  97. :PUNIT_PRICE, --UNIT_PRICE
  98. :PQUANTITY, --QUANTITY
  99. :PDISCOUNT, --DISCOUNT
  100. :PORDER_STATUS, --ORDER_STATUS
  101. :PItem_Note, --NOTES
  102. :PCREATED_BY, --CREATED_BY
  103. :PCREATED_ON --CREATED_ON
  104. )';
  105.  
  106. EXECUTE IMMEDIATE sql_stmt USING vORDER_ID,
  107. P_PRODUCT_ID,
  108. P_UNIT_PRICE,
  109. P_QUANTITY,
  110. P_DISCOUNT,
  111. P_ORDER_STATUS,
  112. P_ITEM_NOTE,
  113. vCreated_by,
  114. vCreated_On;
  115.  
  116. --DBMS_OUTPUT.PUT_LINE (sql_stmt); /* For Testing Purpose */
  117.  
  118. RETURN (VOrder_Id);
  119.  
  120. EXCEPTION WHEN OTHERS THEN
  121.  
  122. ROLLBACK TO Setp1;
  123.  
  124. ERR_CODE := SQLCODE;
  125. ERR_MSG := SUBSTR(SQLERRM, 1, 1024);
  126.  
  127. sql_stmt := F_INS_ERROR_LOG(SYSDATE, --P_ERROR_TIME,
  128. vCreated_by, --P_USER_ID,
  129. 'F_INS_Order_Data', --P_PROGRAM_UNIT,
  130. NULL, --P_ERROR_LOCATION,
  131. NULL, --P_KEY_DATA_DESC,
  132. ERR_CODE, --P_ERROR_CODE,
  133. ERR_MSG); --P_ERROR_MSG)';
  134.  
  135. RETURN -1;
  136.  
  137. END F_INS_Order_Data;
  138. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement