兩個方法:
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供東明網(wǎng)站建設(shè)、東明做網(wǎng)站、東明網(wǎng)站設(shè)計、東明網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、東明企業(yè)網(wǎng)站模板建站服務(wù),10年東明做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1,重新創(chuàng)建一個表,然后創(chuàng)建一個序列,把老數(shù)據(jù)導(dǎo)入新表,刪除老表,修改新表名字為老表
2,直接在原來表上增加一個字段,創(chuàng)建一個序列,通過更新的方式修改老數(shù)據(jù)的這個字段。
具體操作主要是2點,首先是創(chuàng)建一個序列名sequence;
然后是,insert語句的時候:將自增的字段的位置,寫成序列名.nextval。
從創(chuàng)建表開始,然后創(chuàng)建sequence,到insert語句
1.首先創(chuàng)建表
CREATE TABLE "FLOWCAL"."T_USERINFO"
( "C_ID" NUMBER(*,0),
"C_USER" VARCHAR2(20 BYTE),
"C_PASSWORD" VARCHAR2(20 BYTE),
"C_ROLE" VARCHAR2(20 BYTE),
"C_COMMENT1" VARCHAR2(20 BYTE),
"C_COMMENT2" VARCHAR2(20 BYTE)
)
現(xiàn)在想讓C_ID自增一。
2.首先創(chuàng)建一個oracle的sequence,sql語句如下:
create sequence 序列名
increment by 1
start with 1
maxvalue 999999999
cycle;
建立一個最小為1,最大為999999999的一個序列號會自動循環(huán)的序列
下面的sequence,如下:
CREATE SEQUENCE "FLOWCAL"."SEQ_USERINFO"
MINVALUE 0
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
START WITH 24
CACHE 20
ORDER
CYCLE ;
3.通過序列名.nextval實現(xiàn)插入時,字段的自增一
當(dāng)向表中插入數(shù)據(jù)時,SQL語句寫法如下:
SQL insert into 表名 values(,列1值,列2值,....);
"序列名"可以替換為自己需要的名字.
下面insert語句:
insert into T_USERINFO values(SEQ_USERINFO.NEXTVAL,'111','11','11','11','11')
ORA-00604: 遞歸 SQL 級別 1 出現(xiàn)錯誤,ORA-01000: 超出打開游標(biāo)的最大數(shù)
這兩個錯誤一般出現(xiàn)在利用代碼循環(huán)執(zhí)行數(shù)據(jù)庫命令(例如將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫)時,例如在C#中
1)建立一個OracleConnection
2)循環(huán)創(chuàng)建OracleCommand,并執(zhí)行數(shù)據(jù)導(dǎo)入
3)關(guān)閉OracleConnection
當(dāng)?shù)诙降难h(huán)數(shù)比較小時,代碼運行正常。當(dāng)循環(huán)數(shù)超過一定值(例如300),代碼就會出錯。提示:
ORA-01000: 超出打開游標(biāo)的最大數(shù)
這是因為Oracle數(shù)據(jù)庫中打開的游標(biāo)最大數(shù)為一定值,例如300,當(dāng)代碼中第二步時, 循環(huán)中一個Command占用了一個數(shù)據(jù)庫游標(biāo),執(zhí)行的循環(huán)超過這個數(shù)時就會產(chǎn)生游標(biāo)數(shù)目溢出錯誤。
解決辦法:
第二步循環(huán)中中每次執(zhí)行完OracleCommand,都將command.dispose()下,釋放掉這個資源就好了
此外,也可以修改數(shù)據(jù)庫的最大游標(biāo)數(shù),不過這個方法治標(biāo)不治本。
不是十分明白你的意思,你是說寫個C/C++程序來實現(xiàn)么?那將非常容易
1:創(chuàng)建個表,例如 number??梢栽趏racle里創(chuàng)建也可以用接口創(chuàng)建。
這是在oracle里創(chuàng)建create table number(NO number,... ...);這個參數(shù)我就不具體說了啊。
2:寫程序。c語言用OCI,c++用occi。我用的occi
#include iostream
#define LINUXOCCI //避免函數(shù)重定義錯誤
#include occi.h
using namespace std;
using namespace oracle::occi;
int main()
{
//創(chuàng)建環(huán)境變量
//Environment
Environment *env = Environment::createEnvironment(Environment::OBJECT);
//username是oracle的用戶名
//userpass是oracle的密碼
//connstr是oracle的連接字符串
string username = "atc";
string userpass = "atc";
string connstr = "192.168.1.101:1521/utms";
//創(chuàng)建連接
//connection
Connection *conn = env-createConnection(username, userpass, connstr);
if(conn == NULL)
{
cout "access oracle failed..." endl;
return 0;
}
int count =0;
whlie(1)
{
//創(chuàng)建一個SQL語句的執(zhí)行對象
//statement
Statement *st = conn-createStatement();
st-setSQL("insert into number values(count)");
st-executeUpdate();
n++;
if(n == 60)
break;
}
//關(guān)閉連接
env-terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
理論上上面的代碼就能實現(xiàn)你想要的,不過我當(dāng)時寫的是實現(xiàn)一個插入代碼,我修改的沒測試,你試試看,不行的話我還有批量操作的代碼。你在站短我咱們在研究
1.首先裝好10g 11g的數(shù)據(jù)庫;
2.登陸數(shù)據(jù)庫并創(chuàng)建用戶;
開始--運行--sqlplus /nolog
conn /as sysdba
create user test identified by test;
grant resource,connect to test;
3.使用test(密碼 test)用戶賬號登陸,并建立一張簡單的表
create table test (id int,name char(10));
4.向該表插入數(shù)據(jù)
insert into test values (1,'yxd2766');
commit;
你也沒給出個表名,臨時給你寫個例子,自己運行看看結(jié)果吧
建表
create table orders(oid varchar2(10),
price int);插入數(shù)據(jù)
insert into orders values ('1111',100);
insert into orders values ('1111',200);
insert into orders values ('2222',400);建立存儲過程
create or replace procedure p_orders
(v_oid varchar2)
as
v_count int;
v_pirce int;
begin
select count(*) into v_count from orders where oid=v_oid;
if v_count=0
then
dbms_output.put_line('訂單編號不存在');
else
select sum(price) into v_pirce from orders where oid=v_oid;
dbms_output.put_line('編號為'||v_oid||'的訂單金額為'||v_pirce);
end if;
end;
執(zhí)行1
begin
p_orders('3333');--括號里這個就是訂單編號
end;這個執(zhí)行結(jié)果是
執(zhí)行2
begin
p_orders('1111');--括號里這個就是訂單編號
end;
然后你自己再改改吧
插入數(shù)據(jù)分為兩種情況,一種是用insert into ...values 的語法,一種是用insert into select ...的語法。
舉例:
如test表中有如下數(shù)據(jù):
插入一條id為6,name為楊七的數(shù)據(jù)。
insert into test values (6,'楊七');
commit;
此時表中數(shù)據(jù)為:
另,要求向表中復(fù)制一條目前表中id為1的數(shù)據(jù),可用如下語句:
insert into test select * from test where id=1;
commit;
此時表中數(shù)據(jù)為:
注意:在執(zhí)行insert語句后,必須提交,即commit,否則插入結(jié)果只在當(dāng)前session有效,重新開啟另外的session會插入不成功。
分享文章:oracle怎么填數(shù) oracle怎么計數(shù)
瀏覽地址:http://muchs.cn/article34/hjcope.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、域名注冊、商城網(wǎng)站、關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)