预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CREATETABLE"SCOTT"."TEST"("UID"VARCHAR2(10byte)NOTNULL, "UNAME"VARCHAR2(10byte)NOTNULL,"UAGE"VARCHAR2(10byte)NOT NULL) 在.NET中调用Oracle9i存储过程可以用多个数据提供者,比如 OralceClient,OleDb本文将用OralceClien为例。.NET语言用C#。 一、调用一个带输入、输出参数的存储过程 首先,在Oralce中创建存储过程如下: createorreplaceprocedurescott.GetRecords(name_outoutvarchar2,age_ininvarchar2)asbegin selectNAMEintoname_outfromscott.testwhereAGE=age_in; end; 然后,在C颗目xx如下调用: stringconnectionString="DataSource=YXZHANG;User ID=YXZHANG;Password=YXZHANG”; stringqueryString="getrecords"; cmd.CommandType=CommandType.StoredProcedure; cmd・Parameters.Add("name_out",OracleType.VarChar,20); cmd.Parameters["name_out"].Direction=ParameterDirection.Output; cmd.Parameters.Add("age_in”,21); cmd・ExecuteNonQuery(); Console.WriteLine("Nameis:{0}”,cmd・Parameters["name_out"]・Value・ToString()); Console.WriteLine("Theexceptionmessageis: {0}”,ex.Message.ToString());} finally{Console.WriteLine-(-End----」---结: 以上是很平常的调用方法,但是我在做这个示例程序的时候,却不是那么一帆风顺。这里要指出OracleClient的一个不尽如人意之处,就是对于参数名称,必须和存储过程定义中的参数同名,否则就会报错。比如将代码中的 “name_ou成为别的名称的话,就会报异常。但我试着用OleDb代替 OralceClient却没有这个问题。不知道在新版本的数据提供程序中会否改进这一点? 二、调用不返回数据的存储过程 首先,在Oralce中创建存储过程如下: createorreplaceprocedureinsertRecord(UserIDinvarchar2, UserNameinvarchar2, UserAgeinvarchar2)is begin insertintotestvalues(UserID,UserName,UserAge); end; 然后,在C颗目xx如下调用: stringconnectionString="Data ID=YXZHANG;Password=YXZHANG”; stringqueryString="insertRecord"; cmd・CommandType=CommandType・StoredProcedure; cmd.Parameters.Add("UserID","7"); cmd.Parameters.Add("UserName”,"Dell");cmd.Parameters.Add("UserAge”,"40”); cmd.ExecuteNonQuery(); Console.WriteLine("Theexceptionmessageis: {0}”,ex.Message.ToString());} finally{Console.WriteLine(-End结- 不返回数据的存储过程一般有Delete,Insert,Update。虽然它们的SQL语句不同,但是调用方面都是一样的。只要传入正确的参数,一般不会出什么问题。不过还是要注意,在使用OralceClien作为数据提供者的时候,参数名称一定要和存储过程定义中的一致!至于参数添加的顺序倒是无所谓的,因为有参数名称作为区别。 三、IDENTITY八SEQUENCE SqlServer中,定义一个列为递增列很容易,但我在Oracle中却怎么也找不到设置的方法。 不过查了点资料后知道Oracle中有个叫Sequence的对象,产生一个唯一的序列号,类似于SqlServer中的IDENTITY于是,我做了如下实验: 首先,在Oracle中