insert語句
string query = "insert into user(id,upass) values(vieri,password)";這句可能有錯誤
原因如下:
(1)vieri和password如果是個變量應寫為
string query = "insert into user(id,upass) values('"&vieri&"','"&password&"')";
注:如果變量為字符串應寫為'"&;變量名&;"',若為數字應為"&;變量名&;",上面我把兩個變量都作為字符串了.有的程序里是用"+"而不是用"&;",請注意!!
(2)vieri和password如果是個常量量應寫為
string query = "insert into user(id,upass) values('vieri','password')";
注:在這里我還是把兩個量作為字符串了,如不是請自己改過來
sql中sequence的用法
insert into PRODUCT (你建的序列.NEXTVAL,PRD_DESCRIPTION) values (id,description) 在每次插入數據的時候,id都會按你建的序列的增量自動增加。
sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1、 create sequence 你首先要有create sequence或者create any sequence權限,create sequence emp_sequence INCREMENT BY 1 -- 每次加幾個 START WITH 1 -- 從1開始計數 NOMAXVALUE -- 不設置最大值 NOCYCLE -- 一直累加,不循環 CACHE 10; 一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL CURRVAL=返回sequence的當前值 NEXTVAL=增加sequence的值,然后返回sequence值 比如:emp_*L emp_*L 可以使用sequence的地方:- 不包含子查詢、snapshot、VIEW的 SELECT 語句- INSERT語句的子查詢中- NSERT語句的VALUES中- UPDATE 的 SET中 可以看如下例子:INSERT INTO emp VALUES(*l, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT *l FROM DUAL; 但是要注意的是:- 第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會自動增加你定義的INCREMENT BY值,然后返回增加后的值。
CURRVAL 總是返回當前sequence的值,但是在第一次NEXTVAL 初始化之后才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次sequence的值,所以如果你在同一個語句里面使用多個NEXTVAL,其值就是不一樣的。
明白?- 如果指定CACHE值,oracle就可以預先在內存里面放置一些sequence,這樣存取的快 些。cache里面的取完后,oracle自動再取一組到cache。
使用cache或許會跳號, 比如 數據庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可 以在create sequence的時候用nocache防止這種情況。2、 Alter sequence 你或者是該sequence的owner,或者有ALTER ANY sequence權限才能改動sequence。
可 以alter除start值之外的所有sequence參數。如果想要改變start值,必須drop sequence 再re-create。
例子:ALTER sequence emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后從頭開始 NOCACHE; 影響sequence的初始化參數:sequence_CACHE_ENTRIES = 設置能同時被cache的sequence數目。可以很簡單的Drop sequence DROP sequence order_seq; sequence的用法:create seqence sequence_name [start with n1] ----------------->n1到n5都是整數;start with 生成的第一個n1值 [increment by n2] -----------------> increment by n2 遞增量,可以為正整數或負整數,指明每一次增加多少 [maxvalue n3|no maxvalue] ----------------->maxvalue最大值,no maxvalue用于指定序列沒有上限 [minvalue n4|no minvalue] ----------------->minvalue 最小值,no minvalue,沒有指定最小下限 [cache n5|no cache] ----------------->cache 用高速緩存中可以預分配的序列號個數,默認是20。
如果緩存中的序列號沒有用完就關閉數據庫等其它原因.使用 sequence CURRVAL 和 NEXTVAL 能夠在以下情況使用: insert的values字句、select中的select列表、update中的set字句 CURRVAL 和 NEXTVAL 不能夠在以下情況使用: 子查詢、視圖和實體化視圖的查詢、帶distinct的select語句、帶 group by和order by的select語句、帶union或intersect或minus的select語句、select中的where字句、create table與alter table中的default值、check約束條件。刪除sequence drop sequence seq_a; 當刪除sequence后,對應它的同義詞會被保留,但是引用時會報錯。
oracle rac環境中的sequence oracle為了在rac環境下為了sequence的一致性,使用了三種鎖:row cache lock、SQ鎖、SV鎖。 row cache lock的目的是在sequence指定nocache的情況下調用*l過程中保證序列的順序性; SQ鎖是應用于指定了cache+noorder的情況下調用*l過程中。
SV 鎖(dfs lock handel) 是調用*l期間擁有的鎖。前提是創建sequence時指定了cache 和order屬性 (cache+order)。
order參數的目的是為了在RAC上節點之間生成sequence的順序得到保障。創建sequence賦予的cache值較小時,有enq:sq-contention等待增加的趨勢。
cache的缺省值是20.因此創建并發訪問多的sequence時,cacheh值應取大一些。否則會發生enq:sq-contention等待事件。
rac上創建sequence時,如果指定了cache大小而賦予noorder屬性,則各節點將會把不同范圍的sequence值cache到內 存上。若兩個節點之間都必須通過依次遞增方式使用sequence,必須賦予如下的order屬性(一般不需要這樣做)”sql> create sequence seq_b cache 100 order”。
如果是已賦予了cache+order屬性的sequence,oracle使用SV鎖進行同步。SV鎖爭用問題發生時的解決方法與sq鎖 的情況相同,就是將cache 值進行適當調整。
在RAC多節點環境下,Sequence的Cache屬性對性能的影響很大。應該盡量賦予cache+noorder屬。
R語言 seq函數
兄弟,你是不是在看《機器學習:實用案例解析》這本書。這個問題我也遇到了。把這一行:con <- file(path, open = "rt", encoding = "latin1")中的encoding刪掉,就解決了。(改成'utf-8'也不行)就是字符編碼的問題。
seq(which(text == "")[1]+1, length(text), 1)函數報'from' cannot be infinite,seq方法即向量生成,必須給它一個起點元素。因為which()方法從text字符向量中找空字符串元素找不到。問題出在text中。readLines方法在讀到錯誤編碼后會中斷,導致text中可能還沒有讀到第一個空行。所以上面也報in readLines:incomplete final line found(最終行不完整)
ps:我也是找了一圈seq,readLines的文檔,最后把控制臺warning的文件單條拎出來file、readLines之后print出來,才發現問題出在file方法這兒。