前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我的ODP.NET开发之路3-Oracle Package/Procedure/Function

我的ODP.NET开发之路3-Oracle Package/Procedure/Function

作者头像
崔文远TroyCui
发布2019-02-27 10:13:37
6190
发布2019-02-27 10:13:37
举报
文章被收录于专栏:远在上海远在上海

上周的项目进展比较大,完成了几个重大的功能。这其中涉及到在Oracle中创建新表、序列、索引、触发器、包、存储过程、函数,当然了也在实战中学习了几个.Net的Dataset\Datatable的用法。一直想写,不过项目紧,真没空。这不今天有点时间,但是很多东西又没那么强烈的书写欲望了。

说说今天工作遇到的几个东东吧,第一个是Oracle中的包。不晓得为什么Oracle设计包,并且把存储过程和函数都写在不同的包里,而MSSQL虽然也都有存储过程和函数,但是基本上所有的C#程序调用都是对存储过程的操作。Oracle中的存储过程如果放在包内,C#程序使用“包名.存储过程(变量)”或者“包名.函数(变量)”的形式来访问。

对于创建或者修改包的语法我就不重复了,你可以搜索一下。不过有一点我需要分享给大家,在Function中,如果对变量赋值,写法可不一样。

MSSQL中一般写成

<br/>@BlockingReason nvarchar(50)<br/><br/>Select @BlockingReason = value from table where ...<br/>

而在Oracle中是Select value into variable from table where …,看下面的例子

<br/>BlockingReason   varchar2(100);<br/>select trim(nvl(ipbp.t$brea,'')) into BlockingReason<br/>               from baan.ttdipu010301 ipbp  -- item - purchase BP data<br/>              where upper(trim(ipbp.t$item)) = upper(sWAIPartNumber)<br/>                and ipbp.t$otbp =  upper(sBusinessPartnerCode)<br/>                and rownum <=1 order by rownum;<br/>

第二个要分享的是3个很有用的Oracle函数:SUBSTR、DECODE、NVL SUBSTR(Value,1,5) 取出从Value的第1位开始取5个字符长度 NVL(Value,’a’) 如果Value为Null返回a DECODE比较复杂,如果你需要针对一个值做很多判断的时候,不用写case了。这个详细的介绍和用法,你搜索一下吧,我解释不清楚。

第三个要分享的,其实是C# .Net的一个Datatable绑定到Dropdownlist的代码,包括了选择值的默认选项

<br/>WAIonTracFailureModes oFailureModes = new WAIonTracFailureModes(_oWorkItem.ApplicationID);<br/><br/>        DataTable dt = oFailureModes.List().Tables[0].Copy();<br/>        DataRow[] drs = dt.Select("ParentID=0");<br/>        foreach (DataRow r in drs)<br/>        {<br/>            //text,value<br/>            WAIonTracFailureModeList.Items.Add(new ListItem(r["Name"].ToString(), r["FailureModeID"].ToString()));<br/>        }<br/><br/>        //WAIonTracFailureModeList.DataSource = oFailureModes.List();<br/>        //WAIonTracFailureModeList.DataTextField = "Name";<br/>        //WAIonTracFailureModeList.DataValueField = "FailureModeID";<br/>        //WAIonTracFailureModeList.DataBind();<br/><br/>        //DataRow[] drs2 = dt.Select("ParentID="+_oWorkItem.FailureModeID);<br/>        DataTable dt2 = oFailureModes.List().Tables[0].Copy();<br/>        DataRow[] drs2 = dt2.Select();<br/>        //<br/>        if (_oWorkItem.FailureModeID != null)<br/>        {<br/>            drs2 = dt2.Select("ParentID=" + _oWorkItem.FailureModeID);<br/>        }<br/><br/>        foreach (DataRow r2 in drs2)<br/>        {<br/>            //text,value<br/>            WAIonTracDetailsOfFailureList.Items.Add(new ListItem(r2["Name"].ToString(), r2["FailureModeID"].ToString()));<br/>        }<br/>

绑定默认/选择值的

<br/>WAIonTracFailureModeList.SelectedIndex = WAIonTracFailureModeList.Items.IndexOf(WAIonTracFailureModeList.Items.FindByValue(_oWorkItem.FailureModeID.ToString()));<br/>        WAIonTracDetailsOfFailureList.SelectedIndex = WAIonTracDetailsOfFailureList.Items.IndexOf(WAIonTracDetailsOfFailureList.Items.FindByValue(_oWorkItem.DetailsOfFailureID.ToString()));<br/>

先写这么多吧,比较乱。另外,昨天买的《涂抹Oracle-三思笔记之一步一步学Oracle》已经到手,目前只知道如何用了,但是“为什么”还不知道,希望这本评价颇高的书能告诉我。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011年12月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档