请教oracle9i建立递增列的方法,最好是界面操作。 请教oracle9i建立递增列的方法:我对oracle9i数据库一窍不通,请教在怎么建立如sql server一样建立递增列,最好是界面操作,如果是语句的话,我根本不知道在哪儿输入。谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 三、IDENTITY 和 SEQUENCESql Server中,定义一个列为递增列很容易,但我在Oracle中却怎么也找不到设置的方法。不过查了点资料后知道Oracle中有个叫Sequence的对象,产生一个唯一的序列号,类似于Sql Server中的IDENTITY。于是,我做了如下实验: 首先,在Oracle中创建了一个名为TEST_SEQ的Sequence对象,SQL语句如下:create sequence TEST_SEQminvalue 100maxvalue 999start with 102increment by 1nocache; 语法应该是比较易懂的,最小最大值分别用minvalue,maxvalue表示,初始值是102(这个数字是动态变化的,我创建的时候设的是100,后因插入了2条数据后就自动增加了2),increment当然就是步长了。在PL/SQL中可以用test_seq.nextval访问下一个序列号,用test_seq.currval访问当前的序列号。 定义完了Sequence,接下来就是创建一个存储过程InsertRecordWithSequence:--这次我修改了test表的定义,和前面的示例不同。其中,UserID是PK。create or replace procedure InsertRecordWithSequence(UserID out number, UserName in varchar2, UserAge in number) isbegin 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表值得注意。 哈哈,搞出来了。先见一个序列,比如S_ID然后在表里建一列:EM_ID然后再建一个触发,在插入之前最后在写上:for each rowbeginselset S_ID.nextral into:new.EM_ID from dualend;就可以了。其中from dual不要变。 我想动态生成一个datalist,其形式完全照抄是已有的只是数据不同怎么做 框架中如何使用等待动画? microsoft Duwamish中非常困惑的问题! 关于显示隐藏..... datalist中的ItemDataBound无法取值? iis设置问题求助 关于.NET技术能否自动抓取数据系统的问题 快发疯啦。。。各位大哥大姐快来帮忙啊。。。 ASP.NET的网页抖动问题 水晶报表注册问题? 请问如何获取嵌套datalist里checkbox的值 aspx文件在IE中c#脚本不显示出来
先见一个序列,比如S_ID
然后在表里建一列:EM_ID
然后再建一个触发,在插入之前最后在写上:
for each row
begin
selset S_ID.nextral into:new.EM_ID from dual
end;
就可以了。其中from dual不要变。