Oracle’da clob türünde parametre set etme

Oracle’da varchar2 türü max size değerinden daha büyük alanlar için clob türünde alanlar oluştururuz, aşağıdaki örnekte c# ile clob nesnesine nasıl parametre gönderildiğini görebilirsiniz.

CLOB :
Verileri karakter olarak saklar .Max 128 TB’a kadar veri saklar. TXT dosyalarının içerisindeki verileri CLOB veri tipinde saklayabiliriz

Command command = new Command();
OracleConnection Con = command.Connection();
Con.Open();
OracleTransaction tx = Con.BeginTransaction();
OracleCommand tempcmd = Con.CreateCommand();
tempcmd.Transaction = tx;
tempcmd.CommandText = “declare xx clob; begin dbms_lob.createtemporary(xx, false, 0); :tempclob := xx; end;”;
tempcmd.Parameters.Add(new OracleParameter(“tempclob”, OracleType.Clob)).Direction = ParameterDirection.Output;
tempcmd.ExecuteNonQuery();
//————————————————————

OracleLob tempLob = (OracleLob)tempcmd.Parameters[0].Value;

System.Text.Encoding enc = Encoding.Unicode;
Byte[] b = enc.GetBytes(result);
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(b, 0, b.Length);
tempLob.EndBatch();
//————————————————————
OracleCommand cmd = new OracleCommand(“my_procedure_name_api.Yeni”, Con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = tx;
cmd.Parameters.AddWithValue(“MESSAGE_ID_”, messageId);
cmd.Parameters.AddWithValue(“FILE_NAME_”, remoteFileName);
cmd.Parameters.AddWithValue(“SFTP_FILE_”, OracleType.Clob).Value = tempLob;
cmd.ExecuteNonQuery();
tx.Commit();
Con.Close();

Leave a reply:

Your email address will not be published.