在 EnterpriseLibrary2.0中,执行Oracle的存储过程有错~

问题描述

存储过程代码如下:createorreplaceprocedureGetID(/*以此字符为自增长名*/vcTableIDinvarchar,/*初始化*/vcIniStateinvarchar,/*需增长数量*/iCountininteger,/*没有指定TableID是否创建true创建false不创建*/blCreateinboolean,/*返回起始值*/iValueoutinteger,/*命令执行是否成功0成功1参数错误2没有指定TableID*/iRetvaloutinteger)is/*定义变量*/vcStatevarchar(10);iRowCountnumber;iStepnumber;iIniValuenumber;beginiRetval:=99;if((vcTableIDisnull)or(length(vcTableID)=0)or(iCount<1))theniRetval:=1;rollback;return;endif;updatePub_Sequencesetvalue=valuewhereTableID=vcTableID;iRowCount:=sql%rowcount;if(iRowCount=1)thenselectValue,IniState,Step,IniValueintoiValue,vcState,iStep,iIniValuefromPub_SequencewhereTableID=vcTableID;if(vcIniStateisnullorlength(vcIniState)=0)thenupdatePub_SequencesetValue=Value+iCountwhereTableID=vcTableID;elsif(vcState=vcIniState)thenupdatePub_SequencesetValue=Value+iCountwhereTableID=vcTableID;elsif(vcState!=vcIniState)thenupdatePub_SequencesetValue=iIniValue+iCountwhereTableID=vcTableID;iValue:=0;endif;elsif(iRowCount=0)thenif(blCreate)theninsertintoPub_Sequence(Tableid,Value,Inivalue,Inistate,Step,Datastate,Testdata)values(vcTableID,iCount,0,'',1,0,0);iValue:=0;elseiRetval:=2;endif;endif;commit;iRetval:=0;exceptionwhenothersthenrollback;iRetval:=99;return;endGetID;

程序代码:Databasedb=DatabaseFactory.CreateDatabase();DbCommanddbCommand=db.GetStoredProcCommand("GetID");db.AddInParameter(dbCommand,"vcTableID",DbType.String,tableId);db.AddInParameter(dbCommand,"vcIniState",DbType.String,string.Empty);db.AddInParameter(dbCommand,"iCount",DbType.Int64,count);db.AddInParameter(dbCommand,"blCreate",DbType.Boolean,1);db.AddOutParameter(dbCommand,"iValue",DbType.Int32,32);db.AddOutParameter(dbCommand,"iRetval",DbType.Int32,32);db.ExecuteNonQuery(dbCommand);result=db.GetParameterValue(dbCommand,"iRetval").ToString();

存储过程肯定没有问题,但是在程序中执行就会出现错误:错误如下:ORA-06550:第1行,第7列:PLS-00306:调用'GETID'时参数个数或类型错误ORA-06550:第1行,第7列:PL/SQL:Statementignored请问该如何解决啊。。。。。。。。谢谢

解决方案

解决方案二:
updatePub_Sequencesetvalue=valuewhereTableID=vcTableID;--value=value什么意思?iValueoutinteger,iRetvaloutinteger--两个输出值result=db.GetParameterValue(dbCommand,"iRetval").ToString();--一个结果--类型定义的也不好--把int改成number--把string改成varchar

解决方案三:
--以此字符为自增长名--自动增长用序列呀

时间: 2024-10-06 14:04:49

在 EnterpriseLibrary2.0中,执行Oracle的存储过程有错~的相关文章

如何在Delphi中调用oracle的存储过程返回数据集

oracle|存储过程|数据 选自CSDN http://search.csdn.net/Expert/topic/2280/2280860.xml?temp=2.169436E-02 论坛中JCC0128 网友的发言 [delphi+oracle报表解决方案(一)]delphi中调用oracle的存储过程(分带返回游标,不返回值两种)  关键字: delphi ,oracle存储过程,游标,返回数据集,报表 注:delphi 6+ oracle 8.1.6 一.创建包与包体 1.附:建表aac

Oracle创建存储过程报错???

问题描述 Oracle创建存储过程报错??? 解决方案 END IF后面少了一个; 改成 END IF; DBMS_OUTPUT 解决方案二: Oracle创建存储过程Oracle 创建存储过程Oracle 创建及调用存储过程,脚本示例 解决方案三: 感觉楼上说的对,end if 后面缺个分号,后面也没有commit,这个执行完了和没执行一样.

大量数据执行-oracle在存储过程中执行update语句

问题描述 oracle在存储过程中执行update语句 在存储过程中经过加工对表执行update语句,但表的数据太大了,2百多万数据的表我就要执行1个多小时,,,8千多万数据的表要怎么办啊? 解决方案 有这样的思路你可参考下: 思路1.写存储过程,引入loop循环,分批次更新.提交: 思路2.以nologging形式重新建表,按新规则把数据插过来:

VFP中调用Oracle的存储过程

VFP由于其通俗.易用,深受广大开发人员的欢迎,但其安全性与稳定性却不十分完善.而Oracle在此方面的优点是有口皆碑的,两者结合,能开发出高效.安全和稳定的应用系统.有关在VFP中调用Oracle存储过程方法的资料较少,下面就此举一简单例子,希望起到抛砖引玉的作用. 此方法适用于用VFP作前端开发工具.Oracle作后端数据库的C/S开发方法. 在Oracle端,建有如下表和存储过程: 表gzb如下: SQL〉select * from gzb; ID GZ 1 3050 3 2500 2 4

ASP.NET 2.0中执行数据库操作命令之一

数据库命令执行时使用Command对象.Command类有三种:SqlCommand.OleDbCommand与OdbcCommand. Command对象主要用来运行SELECT.INSERT.UPDATE或DELETE之类的SQL语句.Command对象还可以调用存储过程或从特定表中取得记录. DataReader对象主要是用来读取数据结果,使用它读取记录时通常比从DataSet更快.DataReader类有三种:SqlDataReader.OleDbDataReader和OdbcDataR

ASP.NET 2.0中执行数据库操作命令之二

SqlDataReader类 可以用SqlDataReader类对象从SQL Server数据库中读取行:用OleDbDataReader类对象从支持OLE DB的数据库中读行,如Oracle与Access:用OdbcDataReader类对象从支持ODBC的数据库中读取行. DataReader对象允许你以向前的,只读的方式读取数据,有时候DataReader对象也称为消软管游标.DataReader对象采用了一种简化的数据读取方式,但是提高了性能的同时也牺牲了很多特性.例如在DataSet中

MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程

http://blog.csdn.net/qq_26525215/article/details/52143733 在上面链接的博客中,写了如何用MySQL语句定义和执行存储过程 Java执行存储过程: 准备表stud: 列类型分别为: varchar,varchar,int 定义的存储过程分别为: p1:-无参 delimiter && create procedure p1() begin insert into stud values('P100','小李',43); select

一个简单的oracle分页存储过程的实现和调用

oracle|存储过程|分页|oracle|存储过程|分页 在看了众多的分页存储过程以后发现都是针对sqlserver的,而没有oracle的,因此想写一个关于oracle的存储过程,因为我用到的数据库是oracle.---------------------------------------------------------------------------------------------------------------------------------------------

websphere服务器执行db2存储过程报错

问题描述 was不能执行db2的存储过程,用tomcat服务器可以执行.同样was可以执行oracle的存储过程.错误见图 解决方案