本站文章均为原创,欢迎转载,转载请注明出处.谢谢!
预览模式: 普通 | 列表

《心是孤独的猎手》读后感



作  者: (美)麦卡勒斯 著,陈笑黎 译
出 版 社: 上海三联书店
出版时间: 2005-8-1
字  数: 250000
版  次: 1
页  数: 342
印刷时间: 2005-8-1
开  本:
印  次:

查看更多...

Tags: 心是孤独的猎手

分类:读书 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 637

PLS-00306:错误解决思路

如果你是像我一样初次使用Net+Oracle的结合,我想你会跟我一样,有很大的概率碰到这个问题

=======================================================
PLS-00306: wrong number or types of arguments in call to '存储过程名'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored
=======================================================

或者说像这样子的:

pls-00306 调用 时参数个数或类型错误


如果没有经验的话,就会一头雾水到处乱撞。我也是被这个搞得很痛苦了,我把自己解决这问题思路与大家分享一下,希望能对您有所帮助.

Step1:确认你的Oracle包中的存储过程中的参数的总数,是否与您在Net中调用存储过程中的参数保持一致的数目。还有就是要注意function传参与procedure传参的参数的不同写法.

function传参的时候需要加入:号
例如:


Step2:确认你在Oracle包中的存储过程的参数的数据类型,是否能与您在Net中调用存储过程中的参数的数据类型匹配


Step3:确认你在Net应用程序中所使用的连接存储过程和获取返回值的方法是否正确..

这主要是在使用function的时候与使用procedure的时候,当需要获取存储过程或包中的返回的值的时候需要注意的不同方法.一般我们在获取function的返回值的时候使用的是

new oracleParameter(":P_PRICEFORMID",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VAT_CODE",OracleType.VarChar,20),
new oracleParameter(":P_ITEM_CODE",OracleType.VarChar,20),:

而使用procedure的时候是不用:号的


Step4:确认你所传入Oracle中的各参数的值是否会出现null值.

在传入参数过多的时候,这里面的问题很难发现.只能通过一个一个值传入去测试.所以最好的解决办法是将所要传入的参数都给定一个默认值,同时要注意数据类型的匹配.尽量避免null值和空值的传入. 有些情况下使用VS的断点去追踪,明明看见有值,可以在传入oracle表内就会没值,这种情况要特别注意.我就是碰到这样的情况了.


Step5:确认你的服务器端Oracle版本是否与你在客户端Oracle的版本保持一致.

有些时候因为在不同的客户端版本下所编译的包的结果会有所差异,比如我在8i的情况下编译通过,有可能在9i的版本就会通不过,这可能与pl/sql的语法规定有关.所以尽量保持客户端与服务器的oracle版本一致.最好的判断办法就是看看 sql plus的版本是否是一致.


我拿自己在实际过程中碰到的一个例子来说明吧.
见:
http://topic.csdn.net/u/20091019/00/8f05ee3b-e41c-4aff-bafd-a68d47f8eebf.html

我报的错是这样的:
报错如下:

orA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'InsertTOEBSCODE'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored

我的问题是:在本机上测试正常,放至服务器上就出现问题了.最终找到的根缘在于我有个字段传了个null值或是没有传入值进入,导至报错.我是一个一个字段去把这原因找出来的.虽说有点笨拙,但还是把问题给找出来了.




我的操作类中的方法:

这里要注意几点的是:

1.要获取包中存储过程返回的值,需要这样写
parameters[13].Direction=ParameterDirection.Output;
2.注意C#与Oracle的时间转换 一般最好的解决方法是在C#中设置成string类型,然后在Oracle中通过to-date()函数把它转化成时间格式.一开始我也是在这碰了个丁子,后来通过在c#传入所要的时间格式,在oracle中转换成要用的时间格式即可.
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
要规定格式是因为考虑在服务器端是英文操作系统,所得到的默认时间格式与客户端所提交的不同.所以需要根据服务器端的系统环境进行时间格式的设置.



/// <summary>
        /// 插入已OK的价格至EBS中
        /// </summary>
        /// <param name="priceForm"> </param>
        /// <returns> </returns>
        public bool InsertToEBS(Entity.CAS.PriceFormInfo priceForm)
        {
            oracleParameter[] parameters =
            {
                new oracleParameter("P_PRICEFORMID",OracleType.VarChar,20),
                new oracleParameter("P_VENDOR_CODE",OracleType.VarChar,20),
                new oracleParameter("P_VENDOR_SITE_CODE",OracleType.VarChar,20),
                new oracleParameter("P_VAT_CODE",OracleType.VarChar,20),
                new oracleParameter("P_ITEM_CODE",OracleType.VarChar,20),
                new oracleParameter("P_EFFECTIVE_DATE",OracleType.VarChar,20),
                new oracleParameter("P_PURCHASER",OracleType.VarChar,20),
                new oracleParameter("P_CHECKER",OracleType.VarChar,20),
                new oracleParameter("P_AUDITOR",OracleType.VarChar,20),
                new oracleParameter("P_POCT",OracleType.VarChar,10),
                new oracleParameter("P_UNIT_PRICE",OracleType.VarChar,20),
                new oracleParameter("P_PASSED_DATE",OracleType.VarChar,20),
                new oracleParameter("P_TERMS_DESC",OracleType.VarChar,100),
                new oracleParameter("v_retval",OracleType.Number)

            };


            parameters[0].Value = priceForm.FormID.ToString();
            parameters[1].Value = priceForm.SupplierCode;
            parameters[2].Value = priceForm.Vendor_site_code;
            parameters[3].Value = priceForm.Tax.ToString();
            parameters[4].Value = priceForm.MaterialCode.Trim();


            DateTime effectiveDate= Convert.ToDateTime(priceForm.EffectiveDate.ToString());

            DateTime passedDate= Convert.ToDateTime(priceForm.PassedDate.ToString());

        

            if (priceForm.EffectiveDate > priceForm.PassedDate)
            {


                parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");

          
            }
            else
            {
                parameters[5].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
            }
            parameters[6].Value = priceForm.Purchaser;
            parameters[7].Value = priceForm.Checker;
            parameters[8].Value = priceForm.Auditor;
            parameters[9].Value = priceForm.POCT;
            parameters[10].Value = priceForm.Price.ToString();
            parameters[11].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
            parameters[12].Value = priceForm.Payment.ToString().Trim();
            parameters[13].Direction=ParameterDirection.Output;

          

            try
            {
                Convert.ToInt32(OracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_CAS_PRICE_PKG.InsertToEBSCode", parameters));

                int retval = Convert.ToInt32(parameters[13].Value);

                if (retval == 1)
                {
                    return true;
                }
                else

                    return false;
            }
            catch (Exception ee)
            {
                throw ee;
            }
            finally
            {

            }

包中的存储过程
中的存储过程:

create or replace package PO_CAS_PRICE_PKG is

  -- Author  : EASTJAZZ
  -- Created : 2009-10-16 0:29:13
  -- Purpose :

  procedure InsertToEBSCode(P_PRICEFORMID      IN VARCHAR2,
                            P_VENDOR_CODE      IN VARCHAR2,
                            P_VENDOR_SITE_CODE IN VARCHAR2,
                            P_VAT_CODE        IN VARCHAR2,
                            P_ITEM_CODE        IN VARCHAR2,
                            P_EFFECTIVE_DATE  in VARCHAR2,
                            P_PURCHASER        IN VARCHAR2,
                            P_CHECKER          IN VARCHAR2,
                            P_AUDITOR          IN VARCHAR2,
                            P_POCT            IN VARCHAR2,
                            P_UNIT_PRICE      IN VARCHAR2,
                            P_PASSED_DATE      IN VARCHAR2,
                            P_TERMS_DESC      IN VARCHAR2,
                            v_retval          out number);

end PO_CAS_PRICE_PKG;


调用函数取得返回值的Example


public string GetItemDescription(string item_code, int org_id)
       {
           oracleParameter[] Parms =
           {
              
               new oracleParameter("p_item_code",OracleType.VarChar,20),
               new oracleParameter("p_org_id",OracleType.Number,4),
               new oracleParameter("v_item_desc",OracleType.VarChar,150)
           };

           Parms[0].Value = item_code;
           Parms[1].Value = org_id;
           Parms[2].Direction = ParameterDirection.ReturnValue;


           IList<Entity.CAS.EBSVendorInfo> vendorItemList = new List<Entity.CAS.EBSVendorInfo>();

           oracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_VENDORS_PKG.GetItemDescription", Parms);

         return Parms[2].Value.ToString().Trim();
       }


Function:

  function GetItemDescription(p_item_code in varchar2, p_org_id number)
    return varchar2 is
    v_item_desc varchar2(150);
  begin
  
    select msib.DESCRIPTION item_desc
      into v_item_desc
      from MTL_SYSTEM_ITEMS_B msib
    
     where msib.SEGMENT1 = trim(p_item_code)
       and msib.ORGANIZATION_ID = p_org_id;
  
    return v_item_desc;
  
  end GetItemDescription;



初学过程中的一点小经验,与大家分享,欢迎指正.



查看更多...

分类:Net | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1991

 

 

下载地址:

www.dezai.cn/blog/attachments/month_0910/l2009101221333.rar

本刊本期内容如下:

 

 

 
Net
   
Java
 
VB.NET多线程应用
   
Java中四个关键字用法的简要介
 
VB.NET中的动态代码生成技巧
    如何在Java中实现对象比较
 
Vb.Net排序文件名算法
   
Java HOTSPOT VM参数大全
 
Visual Basic和C#中的LINQ聚合
   
java的常用函数代码
 
.NET内存管理、垃圾回收
   
初学者如何开发出高质量J2EE系统
 
监视程序中的死锁及其他
   
基于Java的IDEA加密算法探讨分析
 
较为理想的延迟代理的编写方式
   
构建高性能J2EE应用的十个技巧
 
ASP.NET Forms验证的相关安全性问题
   
Java源代码的折行规则
 
asp.net实现Ctrl+回车提交实例
   
MyEclipse使用的常见12方面浅析
 
C#获取机器码
   
用Java动态代理实现AOP
 
用C#获取局域网内所有机器
   
用java数组实现基本链表和可自扩充的链表
 
使用amcharts(.net版)实现图形报表
   
Java事务处理总结
 
 
 
 
Javascript
   
SQL Server
 
javascript十个最常用的自定义函数
   
查看SQL的执行计划
 
区分 JavaScript、Jscript、VBScript、ASP
   
MSSQL数据库823错误问题的解决
 
利用JS实现网页换皮肤效果
   
MSSQL查询时间段、查不到当日数据记录问题的解决
 
用Javascript查看Tomcat运行情况
   
SQL server 定时调用存储过程
 
Javascript代码直接调用计算机中的程序
   
SQL Server2000的安全配置教程
 
Javascript+XML 操作
   
查找数据库中的空表方法
 
Javascript函数类型判断解决方案
   
sqlserver 常用存储过程集锦
 
JavaScript 图片滑动切换效果
   
SQL Server 2008中如何设置数据库审核规范
 
图片放大预览效果的JS实现
   
SQL Server 2008中的格式化日期
 
jquery 模式对话框终极版
   
SQL条件的顺序对性能的影响
 
JS页内查找关键词的高亮显示
   
 
 
 
 
 
Oracle
   
Life
 
Excel数据通过plsql 导入到Oracle
   
使用社交网络三忌
 
深入讲解调整Oracle SGA大小的解决方法
   
如何讓求職簡歷物盡其用
  对oracle执行计划进行监控     細菌都喜歡潛伏在哪裡?
  oracle中rownum的使用     怎樣拯救女性脆弱的骨骼?
  Oracle随机抽取记录的方法     商务时间的健身处方
  实用的Oracle技术面试问题     判断成熟的23条
  Oracle表空间设计理念     2010年最新令人无语语录
  Oracle数据库中不同恢复的特性     半杯水的人生哲理
  oracle批量插入测试数据     漫长的马拉松的人生跑道
        早日实现退休理想--你需要眼光和资格
         

感谢大家的支持!

Tags: Web开发电子期刊 Web开发期刊 开发期刊

分类:开发期刊 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 568

Oracle EBS:不能正常启动的解决方案


我这里把相关的文件打包上来,好让大家不用再去找寻.在刚接触EBS的时候很容易出现这现问题.

问题1:使用IE浏览器(IE6 IE7 IE8)可以登录EBS,但在打开EBS的WIN Form界面里,IE自动关闭或报错,或是卡住不动

原因1: oracle EBS自带安装的JInitiator 1.3.1.21中的JVM组件版本过低,导致系统不能正常启动
解决方案:下载一个新的jdk,把里面的JVM.dll文件COPY出来,代替JInitiator 1.3.1.21里的JVM.
jvm的路径 一般是在C:\Program Files\Oracle\JInitiator 1.3.1.21\bin\hotspot里面.

下载较新版本的JVM:
下载文件 点击下载此文件

查看更多...

Tags: Oracle EBS:乱码 菜单乱码 ERP乱码

分类:Oracle EBS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2213

Web开发电子期刊2009年第9期(总第37期)



第37期,匆匆上阵,请大家见谅


下载文件 点击下载此文件

分类:开发期刊 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 521

《沸腾十五年》读后感




作  者: 林军 著
出 版 社: 中信出版社
出版时间: 2009-7-1
字  数: 437000
版  次: 1
页  数: 445
印刷时间: 2009-7-1


查看更多...

Tags: 沸腾十五年

分类:读书 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 634

Oracle EBS:Form Builder 中 LOV的建立

Oracle EBS:Form Builder 中 LOV的建立

环境:
DataBase:Oracle 10G
Tool: oracle Forms 6i FormBuilder

建立LOV的关键点在于:

手工建立LOV->定义数据组(Record Group)->指定LOV返回的数据(Return ITEMS)->将LOV加入到对应的ITEMS)->


建立LOV要注意的地方:

查看更多...

Tags: LOV的建立

分类:Oracle EBS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1058

[译]使用C#的用户控件创建ActiveX

文章:Create an ActiveX using a Csharp Usercontrol
来源:http://www.codeguru.com/csharp/.net/net_general/comcom/article.php/c16257
原著作者:Andreas Verhamme
翻译:Dezai

这篇文章主要是介绍如何在C#中如何使用DotNet的用户控件来创建ActiveX控件.你可以设计ActiveX的相关属性,方法和事件.

开发环境:Visual Studio2005




查看更多...

Tags: 创建ActiveX

分类:Net | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1030

我深深感觉到未来的压力


    
       很快,就要到自己的第二十七个年头了.最近日子过得很是闹心.倒不是工作上或生活上有什么不顺之事,只是感觉到责任越来越重,压力越来越大.都说男人三十而立,留给我的时间不到三年.现在的我,是实实在在的三无新人,无车,无房,无老婆---虽说现在的日子还不致于过得很是拮据,但对未来,说实在的我的确是没有什么把握.
今年很异常,有时候总是很想睡觉,可总是睡不着,感觉有许多事情需要去做,时间总是永远不够用.很想尝试去做好每一件事,可总是感觉有这有那样的不妥.似乎总有些是非总是围绕在自己的周围,那种的感觉说不出来,总是很扰心.很多个晚上,我总是作着同样一个梦.在一个黑黑的屋子里,数千计的蛇缠绕着我,我使尽全身力气挣扎,逃离这蛇房。可每每就在要逃离的那一瞬间,我总是被吓醒。那种害怕的感觉,也真的是害怕到绝望了。一年前,一位作设计也很会算命的的朋友经我算过人生:说我总是会被事非缠扰. 原来不太信命的我,倒也感觉到大师的话不是吹水的了。
面对工作,现在虽说还可以靠技术混混日子,但三十岁后呢?我会在公司一直做下去吗?感觉没有比较明确的职业发展。而对未来的生活,我总是在犹豫不决在哪里定下自己在落脚之处,要我在一个根本不熟悉的地方定居,毕竟是个很难很难做得了的决定。一居定终生虽然说得稍为过,但往后又有多少机率有足够的资本去移居他地呢?深圳是我最希望的地方,可我实在对这超高房价承担不起,也只能眼羡而已了.面对周围的人们,我也似乎只是在工作中尽自己的职责而已,生活中的交际似乎远不如远在深圳的网友那么密切。同样,而对爱情,有过一次的痛彻心扉的经历之后,我总是陷入到想爱不敢爱,只会以旁观者的角色去看待。这些事情无声无息,时隐时现地在我的脑海中飞来飞去的。身在长安,几乎没有自己的人脉,想做事情还是得靠自己,一个人走路,比别人花费的力气还是要多一点。
深感欣慰:零零散散的客户们总是不经意地给我带来很多意外的收获。今年虽说公司在上项目,没有什么多少的时间去赚赚外块.很多已成为朋友的客户们理解和宽容,也不经意让自己的担子加重了一把。我始终认为,做事如做人,既然给予别人承诺,那就要对得起别人,对得起自己。这原则,我还是要去坚持的. 其实很想创业,男人没有创业的心不是一个完整的男人,可是算算自己的分量,也实在是自不力量了。也许我们确实只看到创业者风光的一面,但没看到倒在前面千千万万的垫背者。当然,路还是要一步一步地走下去。

我不知是不是因为看了南怀瑾的《老子他说》的缘故,整个人感觉比原来变得更沉闷了。说来说去,就是压力太大了.很想去实现一些事情,很想快快乐乐去过每一天。但最简单的生活,的确需要付出最大的汗水,承受极大的压力---我没有这么NB,但我已经深深感受到了对未来生活的惆怅与迷茫......

很多人生活得不快乐,是因为他们追求的不是幸福,而是比别人幸福。

我也是很长时间没写点东西了,发点劳骚.抒抒心情,散散郁闷。

查看更多...

分类:成长 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 908