打印本文 打印本文 关闭窗口 关闭窗口
Oracle操作相关(2)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数5294  更新时间:2009/4/22 22:04:46  文章录入:mintao  责任编辑:mintao
                                                         UserAge  in number)

is

begin

         insert into test(id, name, age)         --插入一条记录,PK值从Sequece获取

         values(test_seq.nextval, UserName, UserAge);

/*返回PK值。注意Dual表的用法*/

select test_seq.currval into UserID from dual;   

end InsertRecordWithSequence;

   

接下来,就是在C#中进行调用了:

string connectionString = "Data Source=YXZHANG;User ID=YXZHANG;Password=YXZHANG";

     string queryString = "InsertRecordWithSequence";

     OracleConnection cn = new OracleConnection(connectionString);

     OracleCommand cmd = new OracleCommand(queryString,cn);

     cmd.CommandType = CommandType.StoredProcedure;

     cmd.Parameters.Add("UserID",OracleType.Number);

     cmd.Parameters["UserID"].Direction = ParameterDirection.Output;

     cmd.Parameters.Add("UserName","Jack");

     cmd.Parameters.Add("UserAge",40);

    

     try

     {

          cn.Open();

          int rowAffected = cmd.ExecuteNonQuery();

          Console.WriteLine("{0}行已插入。",rowAffected);

          Console.WriteLine("插入行的ID为:{0}",cmd.Parameters["UserID"].Value.ToString());

         cn.Close();

     }

     catch( OracleException ex )

     {

         Console.WriteLine("Exception occurred!");

         Console.WriteLine("The exception message is:{0}",ex.Message.ToString());

     }

     finally

     {

         Console.WriteLine("------------------End-------------------");

     }

小结:

    使用Sequece对象可以很容易地创建唯一序列,在存储过程中的调用也十分方便,只要sequence_name.nextval以及sequence.currval就能得到下一个以及当前的序列值。倒是Dual表值得注意。

 

四、使用DataReader读取返回的结果集

为了让存储过程返回结果集,必须定义一个游标变量作为输出参数。这和Sql Server中有着很大的不同!并且还要用到Oracle中“包”(Package)的概念,似乎有点繁琐,但熟悉后也会觉得很方便。

关于“包”的概念,有很多内容可以参考,在此就不赘述了。首先,我创建了一个名为T

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9]  下一页

打印本文 打印本文 关闭窗口 关闭窗口