.NET中使用ORACLE函数和过程并输出参数(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了.NET中使用ORACLE函数和过程并输出参数(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4400字,纯文字阅读大概需要7分钟。
内容图文
![.NET中使用ORACLE函数和过程并输出参数(1)](/upload/InfoBanner/zyjiaocheng/536/4a830a50d8914b0c836595416cd99985.jpg)
.net,ADO.NET,oracle,DBHELPERORA 我们知道.NET中调用ORACLE 的过程没有调用MS-SQLSERVER中的存储过程那么方便,尤其用到参数输出的时候,但是ORACLE的功能强大不会这个不能处理,这个你懂得,呵呵。 2个解决方案,一个是ORACLE中的函数可以带参数输出的,这
.net,ADO.NET,oracle,DBHELPERORA
我们知道.NET中调用ORACLE 的过程没有调用MS-SQLSERVER中的存储过程那么方便,尤其用到参数输出的时候,但是ORACLE的功能强大不会这个不能处理,这个你懂得,呵呵。
2个解决方案,一个是ORACLE中的函数可以带参数输出的,这个比较吻合SQLSERVER中的存储过程(个人比较意见用 ORACLE中的函数应对SQLSERVER中的存储过
程。
二就是用PROCEDURE 的OUT参数带出结果来解决这个问题。
下面来做个程序测试
输出" /> button2" runat="server" OnClick="button2_Click" Text="测试PROCEDUCE输出" />qiantian" runat="server">
Button1" runat="server" OnClick="Button1_Click" Text="测试FUNCTION
Button3" runat="server" Text="测试FUNCTION三层" OnClick="Button3_Click" /> Button4" runat="server" Text="测试PROCEDURE三层" OnClick="Button4_Click" />
后台代码 针对测试FUNCTION输出(直接写在代码里面)
protected void Button1_Click(object sender, EventArgs e) { OracleConnection conn = new OracleConnection("Data Source=yu;Persist Security Info=True;User ID=$$$$$$;Password=$$$$$$$$;Unicode=True;"); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "F_ACC_CREATEPERMISSION"; cmd.CommandType = CommandType.StoredProcedure; // add the parameters, including the return parameter to retrieve cmd.Parameters.Add("CategoryID", OracleType.Number).Value = 555; cmd.Parameters.Add("Description", OracleType.VarChar, 50).Value = "zzz1"; // the return value cmd.Parameters.Add("Result", OracleType.Number).Direction = ParameterDirection.ReturnValue; // execute the function conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); // output the result Response.Write("Resultis: " + cmd.Parameters["Result"].Value); }
后台代码 针对测试FUNCATION (通过参数 数据库类的 三层模式输出)
protected void Button3_Click(object sender, EventArgs e) { // Accounts.Bus.Permissions myperm = new Accounts.Bus.Permissions(); Accounts.Data.Permission myperm = new Accounts.Data.Permission(); int i = myperm.Create(555, "zzz3"); Response.Write(i.ToString()); }
PERMISSION 类中代码
/// /// 创建一个权限 /// public int Create(int categoryID, string description) { int rowsAffected; OracleParameter[] parameters = { new OracleParameter("CategoryID", OracleType.Number), new OracleParameter("Description", OracleType.VarChar,50) }; parameters[0].Value = categoryID; parameters[1].Value = description; return DbHelperOra.RunProcedure("F_ACC_CREATEPERMISSION", parameters, out rowsAffected); }
DbHelperOra中的代码
/// /// 执行存储过程,返回影响的行数 对应ORACLE 的FUNCTION 的RETURN用的 /// /// 存储过程名 /// 存储过程参数 /// 影响的行数 /// public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected) { using (OracleConnection connection = new OracleConnection(connectionString)) { int result; connection.Open(); OracleCommand command = BuildIntCommand(connection, storedProcName, parameters); rowsAffected = command.ExecuteNonQuery(); result = int.Parse(command.Parameters["ReturnValue"].Value.ToString()); //Connection.Close(); return result; } }
BuildIntCommand调用的代码段
/// /// 创建OracleCommand 对象实例(用来返回一个整数值) /// /// 存储过程名 /// 存储过程参数 /// OracleCommand 对象实例 private static OracleCommand BuildIntCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters) { OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters); //command.Parameters.Add(new OracleParameter("ReturnValue", OracleType.Int32, 4, ParameterDirection.ReturnValue,false, 0, 0, string.Empty, DataRowVersion.Default, null)); command.Parameters.Add("ReturnValue", OracleType.Number).Direction = ParameterDirection.ReturnValue; return command; }
BuildQueryCommand调用的代码段
/// /// 构建OracleCommand 对象(用来返回一个结果集,而不是一个整数值) /// /// 数据库连接 /// 存储过程名 /// 存储过程参数 /// OracleCommand private static OracleCommand BuildQueryCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters) { OracleCommand command = new OracleCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; foreach (OracleParameter parameter in parameters) { command.Parameters.Add(parameter); } return command; }
内容总结
以上是互联网集市为您收集整理的.NET中使用ORACLE函数和过程并输出参数(1)全部内容,希望文章能够帮你解决.NET中使用ORACLE函数和过程并输出参数(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。