(原) ODP.NET 演示以输出参数的形式获取Clob对象
2007-12-26 14:55
651 查看
using System;
using System.Data;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace Sample22
{
/// <summary>
/// 演示以输出参数的形式获取Clob对象
/// </summary>
class Program
{
static void Main(string[] args)
{
// Connect
string constr = "User Id=scott;Password=tiger;Data Source=bjoracle";
OracleConnection conn = Connect(constr);
// Setup
Setup(conn);
// Set the command
OracleCommand cmd = new OracleCommand("begin select story into :1 from multimedia_tab where thekey=1;end;");
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
// Bind a parameter
OracleParameter param = cmd.Parameters.Add("clobdata", OracleDbType.Clob);
param.Direction = ParameterDirection.Output;
// Execute command
try
{
cmd.ExecuteNonQuery();
// Obtain LOB data as a .NET Type.
string lob_data = (string)((OracleClob)(cmd.Parameters[0].Value)).Value;
// Print out the text
Console.WriteLine("Data is: " + lob_data);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Dispose OracleCommand object
cmd.Dispose();
// Close and Dispose OracleConnection object
conn.Close();
conn.Dispose();
}
// Waiting
Console.ReadLine();
}
// Open a new Connection
public static OracleConnection Connect(string connectStr)
{
OracleConnection conn = new OracleConnection(connectStr);
try
{
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
return conn;
}
// 初始化并设置测试数据
public static void Setup(OracleConnection conn)
{
StringBuilder blr;
OracleCommand cmd = new OracleCommand("", conn);
blr = new StringBuilder();
blr.Append("DROP TABLE multimedia_tab");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Warning: {0}", ex.Message);
}
blr = new StringBuilder();
blr.Append("CREATE TABLE multimedia_tab(thekey NUMBER(4) PRIMARY KEY,");
blr.Append("story CLOB, sound BLOB)");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
blr = new StringBuilder();
blr.Append("INSERT INTO multimedia_tab values(");
blr.Append("1,");
blr.Append("'This is a long story. Once upon a time.',");
blr.Append("'897855645645456411321231231231287798778978')");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
}
}
}
引用:ODP.NET example
using System.Data;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace Sample22
{
/// <summary>
/// 演示以输出参数的形式获取Clob对象
/// </summary>
class Program
{
static void Main(string[] args)
{
// Connect
string constr = "User Id=scott;Password=tiger;Data Source=bjoracle";
OracleConnection conn = Connect(constr);
// Setup
Setup(conn);
// Set the command
OracleCommand cmd = new OracleCommand("begin select story into :1 from multimedia_tab where thekey=1;end;");
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
// Bind a parameter
OracleParameter param = cmd.Parameters.Add("clobdata", OracleDbType.Clob);
param.Direction = ParameterDirection.Output;
// Execute command
try
{
cmd.ExecuteNonQuery();
// Obtain LOB data as a .NET Type.
string lob_data = (string)((OracleClob)(cmd.Parameters[0].Value)).Value;
// Print out the text
Console.WriteLine("Data is: " + lob_data);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Dispose OracleCommand object
cmd.Dispose();
// Close and Dispose OracleConnection object
conn.Close();
conn.Dispose();
}
// Waiting
Console.ReadLine();
}
// Open a new Connection
public static OracleConnection Connect(string connectStr)
{
OracleConnection conn = new OracleConnection(connectStr);
try
{
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
return conn;
}
// 初始化并设置测试数据
public static void Setup(OracleConnection conn)
{
StringBuilder blr;
OracleCommand cmd = new OracleCommand("", conn);
blr = new StringBuilder();
blr.Append("DROP TABLE multimedia_tab");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Warning: {0}", ex.Message);
}
blr = new StringBuilder();
blr.Append("CREATE TABLE multimedia_tab(thekey NUMBER(4) PRIMARY KEY,");
blr.Append("story CLOB, sound BLOB)");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
blr = new StringBuilder();
blr.Append("INSERT INTO multimedia_tab values(");
blr.Append("1,");
blr.Append("'This is a long story. Once upon a time.',");
blr.Append("'897855645645456411321231231231287798778978')");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
}
}
}
引用:ODP.NET example
相关文章推荐
- (原) ODP.NET 演示通过存储过程的参数获取OracleClob数据
- (原) ODP.NET 演示以流的形式来获取 LOB 数据
- (原) ODP.NET 演示如何从DataSet中获取LOB数据 附:.NET 环境下连接Oracle数据库
- ADO.NET 快速入门(三):从存储过程获取输出参数
- asp.net获取存储过程的输出参数
- ODP.NET的ODAC组件使用输出参数(Out Parameter)时注意事项
- 使用ADO.NET对象调用存储过程的输入和输出参数
- sql .net 获取输出参数
- ADO.NET 快速入门(三):从存储过程获取输出参数
- NET用使用存储过程获取输出参数的代码示例!
- asp.net获取存储过程的输出参数
- ADO.Net(ODP.NET)执行命令时参数对象不能共用
- location方法详解,获取地址栏URL请求参数,以对象形式保存
- asp.net获取存储过程的输出参数
- ado.net 使用:ExecuteReader 无法获取输出参数
- ADO.Net(ODP.NET)执行命令时参数对象不能共用
- asp.net获取存储过程的输出参数
- ASP.net获取当前url各种属性(文件名、参数、域名等)的方法
- java反射机制,通过类名获取对象,通过方法名和参数调
- 面向对象之形式参数与返回值问题