首頁 資料庫 mysql教程 .NET中使用ORACLE函数和过程并输出参数(1)

.NET中使用ORACLE函数和过程并输出参数(1)

Jun 07, 2016 pm 03:01 PM
.net oracle 使用 函數 參數 輸出 過程

.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参数带出结果来解决这个问题。

下面来做个程序测试

.NET中使用ORACLE函数和过程并输出参数(1)

<img  src="/static/imghw/default1.png" data-src="pic/20151007/fv4kap0u3kx.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><img  src="/static/imghw/default1.png" data-src="pic/20151007/v00wnsymgll.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><span>qiantian</span>" runat="<span>server</span>">
    <p>
    
        Button1" runat="<span>server</span>" OnClick="<span>Button1_Click</span>" Text="<span>测试FUNCTION输出</span>" />
        button2" runat="<span>server</span>" OnClick="<span>button2_Click</span>" Text="<span>测试PROCEDUCE输出</span>" />
        <br>
        Button3" runat="<span>server</span>" Text="<span>测试FUNCTION三层</span>" OnClick="<span>Button3_Click</span>" />
        Button4" runat="<span>server</span>" Text="<span>测试PROCEDURE三层</span>" OnClick="<span>Button4_Click</span>" />
        
     </p>
    
登入後複製

后台代码 针对测试FUNCTION输出(直接写在代码里面)

       <span>protected</span> <span>void</span> Button1_Click(<span>object</span> sender, EventArgs e)
        {
            OracleConnection conn = <span>new</span> OracleConnection("<span>Data Source=yu;Persist Security Info=True;User ID=$$$$$$;Password=$$$$$$$$;Unicode=True;</span>");
            OracleCommand cmd = <span>new</span> OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "<span>F_ACC_CREATEPERMISSION</span>";
            cmd.CommandType = CommandType.StoredProcedure;
            <span>// add the parameters, including the return parameter to retrieve            </span>
            cmd.Parameters.Add("<span>CategoryID</span>", OracleType.Number).Value = 555;
            cmd.Parameters.Add("<span>Description</span>", OracleType.VarChar, 50).Value = "<span>zzz1</span>";
<span>// the return value </span>
            cmd.Parameters.Add("<span>Result</span>", OracleType.Number).Direction = ParameterDirection.ReturnValue;
            <span>// execute the function</span>
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            <span>// output the result</span>
            Response.Write("<span>Resultis: </span>" + cmd.Parameters["<span>Result</span>"].Value);
        }
登入後複製


后台代码 针对测试FUNCATION (通过参数 数据库类的 三层模式输出)

<img  src="/static/imghw/default1.png" data-src="pic/20151007/fv4kap0u3kx.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><img  src="/static/imghw/default1.png" data-src="pic/20151007/v00wnsymgll.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><span>       <span>protected</span> <span>void</span> Button3_Click(<span>object</span> sender, EventArgs e)
        {
         <span>//   Accounts.Bus.Permissions myperm = new Accounts.Bus.Permissions();</span>
            Accounts.Data.Permission myperm = <span>new</span> Accounts.Data.Permission();
            <span>int</span> i = myperm.Create(555, "<span>zzz3</span>");
            Response.Write(i.ToString());
            
          
        }
</span><p> </p><p><br> </p><p> </p>
登入後複製

PERMISSION 类中代码

        <span>/// </span>
        <span>/// 创建一个权限</span>
        <span>/// </span>
        <span>public</span> <span>int</span> Create(<span>int</span> categoryID, <span>string</span> description)
        {
            <span>int</span> rowsAffected;
            OracleParameter[] parameters = 
				{
					<span>new</span> OracleParameter("<span>CategoryID</span>", OracleType.Number),
					<span>new</span> OracleParameter("<span>Description</span>", OracleType.VarChar,50) 
				};
            parameters[0].Value = categoryID;
            parameters[1].Value = description;
            <span>return</span> DbHelperOra.RunProcedure("<span>F_ACC_CREATEPERMISSION</span>", parameters, <span>out</span> rowsAffected);          
        }
登入後複製

DbHelperOra中的代码

   <span>/// </span>
        <span>/// 执行存储过程,返回影响的行数	对应ORACLE 的FUNCTION 的RETURN用的	</span>
        <span>/// </span>
        <span>/// <param name="storedProcName">存储过程名</span>
        <span>/// <param name="parameters">存储过程参数</span>
        <span>/// <param name="rowsAffected">影响的行数</span>
        <span>/// </span>
        <span>public</span> <span>static</span> <span>int</span> RunProcedure(<span>string</span> storedProcName, IDataParameter[] parameters, <span>out</span> <span>int</span> rowsAffected)
        {
            <span>using</span> (OracleConnection connection = <span>new</span> OracleConnection(connectionString))
            {
                <span>int</span> result;
                connection.Open();
                OracleCommand command = BuildIntCommand(connection, storedProcName, parameters);
                rowsAffected = command.ExecuteNonQuery();
                result = <span>int</span>.Parse(command.Parameters["<span>ReturnValue</span>"].Value.ToString());
                <span>//Connection.Close();</span>
                <span>return</span> result;
            }
        }
登入後複製

BuildIntCommand调用的代码段

        <span>/// </span>
        <span>/// 创建OracleCommand 对象实例(用来返回一个整数值)	</span>
        <span>/// </span>
        <span>/// <param name="storedProcName">存储过程名</span>
        <span>/// <param name="parameters">存储过程参数</span>
        <span>/// OracleCommand 对象实例</span>
        <span>private</span> <span>static</span> OracleCommand BuildIntCommand(OracleConnection connection, <span>string</span> storedProcName, IDataParameter[] parameters)
        {
            OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters);
            <span>//command.Parameters.Add(new OracleParameter("ReturnValue", OracleType.Int32, 4, ParameterDirection.ReturnValue,false, 0, 0, string.Empty, DataRowVersion.Default, null));</span>
            command.Parameters.Add("<span>ReturnValue</span>", OracleType.Number).Direction = ParameterDirection.ReturnValue;
            <span>return</span> command;
        }
登入後複製
BuildQueryCommand调用的代码段
登入後複製

        <span>/// </span>
        <span>/// 构建OracleCommand 对象(用来返回一个结果集,而不是一个整数值)</span>
        <span>/// </span>
        <span>/// <param name="connection">数据库连接</span>
        <span>/// <param name="storedProcName">存储过程名</span>
        <span>/// <param name="parameters">存储过程参数</span>
        <span>/// OracleCommand</span>
        <span>private</span> <span>static</span> OracleCommand BuildQueryCommand(OracleConnection connection, <span>string</span> storedProcName, IDataParameter[] parameters)
        {
            OracleCommand command = <span>new</span> OracleCommand(storedProcName, connection);
            command.CommandType = CommandType.StoredProcedure;
            <span>foreach</span> (OracleParameter parameter <span>in</span> parameters)
            {
                command.Parameters.Add(parameter);
            }
            <span>return</span> command;
        }
登入後複製



 


 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
oracle怎麼循環創建游標 oracle怎麼循環創建游標 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

oracle視圖怎麼導出 oracle視圖怎麼導出 Apr 12, 2025 am 06:15 AM

可以通過 EXP 實用程序導出 Oracle 視圖:登錄 Oracle 數據庫。啟動 EXP 實用程序,指定視圖名稱和導出目錄。輸入導出參數,包括目標模式、文件格式和表空間。開始導出。使用 impdp 實用程序驗證導出。

oracle日誌寫滿怎麼辦 oracle日誌寫滿怎麼辦 Apr 12, 2025 am 06:09 AM

Oracle 日誌文件寫滿時,可採用以下解決方案:1)清理舊日誌文件;2)增加日誌文件大小;3)增加日誌文件組;4)設置自動日誌管理;5)重新初始化數據庫。在實施任何解決方案前,建議備份數據庫以防數據丟失。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

HDFS配置CentOS需要哪些步驟 HDFS配置CentOS需要哪些步驟 Apr 14, 2025 pm 06:42 PM

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

oracle數據庫怎麼停止 oracle數據庫怎麼停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 數據庫,請執行以下步驟:1. 連接到數據庫;2. 優雅關機數據庫(shutdown immediate);3. 完全關機數據庫(shutdown abort)。

centos上weblogic的數據庫連接如何配置 centos上weblogic的數據庫連接如何配置 Apr 14, 2025 pm 02:06 PM

在CentOS系統上配置WebLogic數據庫連接,需要完成以下步驟:JDK安裝與環境配置:確保服務器已安裝與WebLogic版本兼容的JDK(例如,WebLogic14.1.1通常需要JDK8)。正確設置JAVA_HOME、CLASSPATH和PATH環境變量。 WebLogic安裝與解壓:從Oracle官方網站下載適用於CentOS系統的WebLogic安裝包,並將其解壓到指定目錄。 WebLogic用戶與目錄創建:創建一個專用的WebLogic用戶賬戶,並設置安全密碼

c#.net的持續相關性:查看當前用法 c#.net的持續相關性:查看當前用法 Apr 16, 2025 am 12:07 AM

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

See all articles