oracle access
date datetime
varchar2() varchar()
varchar2(256) memo (varchar最大長度255,再大就改用memo)
number(1) smallint
number(16,2) decimal(16,2)
blob image
null 什麼都不寫
--(注釋) 沒有此功能
comment 沒有此功能
using index tablespace …… 什麼都不寫
關鍵字可以作為欄位名 關鍵字不能作為欄位名稱,如:right、key、value等
alter也不同
delete語句 :access必須加入from
access不需要commit;
iif(expr, truepart, falsepart)
用這個函式
iif(a.field1='','0',a.field)
oracle access
as 可省略 不可省略
|| + &
1、in 操作符
oracle: " and dl in(" + dllist + ") " +
access: " and dl in ('" +dllist + "') " +
2.1、引數順序:
updcmd.commandtext = "update data setstatus = @status where [name] = @name";
updcmd.connection = aconnection;
oledbparameter parname = new oledbparameter("@name",oledbtype.varchar, 50, "name");
oledbparameter parstatus = new oledbparameter("@status",oledbtype.varchar, 50, "status");
==順序錯了, access不認引數的名字,只認引數的順序
c# rightcode
updcmd.commandtext = " update data set status = @status where [name]= @name " ;
updcmd.connection = aconnection;
oledbparameter parstatus = new oledbparameter( " @status " , oledbtype.varchar, 50 , " status" );
oledbparameter parname = new oledbparameter( " @name " , oledbtype.varchar, 50 , " name " );
在做公司乙個產品中,需要有access、sql server、oracle三個版本;編寫sql語句的過程中,盡量使用一些通用的語句,但還是有些方面有些區別避免不了,現簡單總結一下。
以下a代表access,s代表sql server,o代表oracle
a:select now()
s:select getdate()
o:select sysdate from dual
a:&s:+
o:||
a:mid、ucase、lcase、instr
s:substring、upper、lower、charindex
o:substr、upper、lower、instr
a:iif
s:case when then
o:decode
a:要用#號分隔,或者轉換為日期
select * from books where regdate =#2007-5-1# 或
select * from books where regdate =cdate(』2007-5-1′)
s:可以直接用''
select * from books where regdate =『2007-5-1′
o:to_date
select * from books whereregdate=to_date('2007-05-01','yyyy-mm-dd')
a:cstr,cint,cdate
s:convert
o:to_char,to_number,to_date
insert into a(ii,jj,kk) (select ii,jj,kkfrom b)
這樣的語句,在sql server以及oracle中都不會有錯,但在access中會報:insert into 語句的語法錯誤。access應該把後面select語句的括號去掉,如下:
insert into a(ii,jj,kk) select ii,jj,kkfrom b
同時這樣寫在sql server和oracle中都不會有錯
有些字母在access,sql server中是關鍵字,需要用[ ]界定可解決問題,例如:at,name
sql server和oracle中字段起別名時as可以省略,access不能
select *,1 from a
這樣的語句在access,sql server中不會有錯,但在oracle中是不行的,必須要寫成這樣:
select a.*,1 from a
例如有時間欄位的查詢:calcdate=#2008-05-0111:00:00#,在access中一般會出現如下錯誤:不正常地定義引數物件。提供了不一致或不完整的資訊。將相應query的paramcheck設為false即可。
access中的邏輯值在庫中為-1和0,而sql server中為1和0,所以寫boolfield = 1這樣的語句有相容性問題,應該改為boolfield <> 0
access的varchar(文字)型最大只有255,所以如果乙個文字型字段大於255時,最好定義成備註型(access中)或text型(sqlserver中);
oracle與mysql死鎖處理方式的不同點
oracle與mysql在遇到死鎖的時候都是自動檢測並處理,但是處理還是有些不同,oracle在自動檢測到死鎖後,會kill乙個會話導致的死鎖,但是不會完全回退這個事務的所有 語句,mysql會回退所有的語句。oracle session a sql update t1 set id 5 where...
Oracle 文字與字串不匹配
執行方法的時候,方法在本地跑是正常,到測試環境報錯,錯誤 為 add months to date nvl t2.exec time,t1.distribute time 1 yyyy mm dd hh24 mi ss 1 2 後來找出中間錯誤部分,是t1.distribute time 1這部分報...
Oracle不走索引的原因
在oracle資料庫操作中,為什麼有時乙個表的某個字段明明有索引,當觀察一些語的執行計畫確不走索引呢?如何解決呢?本文我們主要就介紹這部分內容,接下來就讓我們一起來了解一下 不走索引大體有以下幾個原因 你在instance級別所用的是all rows的方式 你的表的統計資訊 最可能的原因 你的表很小...