oracle中:=與=:的區別??
1樓:螞蟻愛吐槽
:="是賦值語句 如: l_name :='sky';..
" 是判斷是否相等。 如: if 1=1 then...
" 是變數繫結 如: if :p_name ='sky' then...
變數繫結 是指在sql語句的條件中使用變數而不是常量。比如shared pool裡有兩條sql語句,select * from tab1 where col1=1;
select * from tab1 where col1=2;
對oracle資料庫來說,這是兩條完全不同的sql,對這兩條語句都需要進行hard parse。因為oracle會根據sql語句的文字去計算每個字元在記憶體裡的hash值,因此雖然上述兩條sql只有乙個字元不一樣,oracle根據hash演算法在記憶體中得到的hash位址就不一樣,所以oracle就會認為這是兩條完全不同的語句。而如果將上述sql改寫成select * from tab1 where col1=:
var1;,然後通過對變數var1的賦值去查詢,那麼oracle對這條語句第一次會進行hard parse,以後就只進行soft parse。假設某條語句被重複執行了幾十萬次,那麼使用bind var帶來的好處是巨大的。乙個應用程式如果bind var使用不充分,那麼幾乎一定會伴隨著嚴重的效能問題。
繫結變數是相對文字變數來講的,所謂文字變數是指在sql直接書寫查詢條件,這樣的sql在不同條件下需要反覆解析,繫結變數是指使用變數來代替直接書寫條件,查詢bind value在執行時傳遞,然後繫結執行。優點是減少硬解析,降低cpu的爭用,節省shared_pool ;缺點是不能使用histogram,sql優化比較困難。
2樓:雨你愛哦
;代表乙個語句的結束。
是sql*plus中的乙個命令,表示執行上述語句比如select * from emp;
在sql*plus中你可以通過更改你的sql語句,然後/就可以執行了。
oracle的<>與!=有什麼區別??
3樓:
至於sqlserver 和oracle 的區別在於:
一、開放性 1. sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。
而且windows平臺的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在處理大資料庫。 2.
oracle 能在所有主流平臺上執行(包括 windows)。完全支援所有的工業標準。採用完全開放策略。
可以使客戶選擇最適合的解決方案。對開發商全力支援。
二、可伸縮性,並行性 1. sql server 並行實施和共存模型並不成熟,很難處理日益增多的使用者數和資料卷,伸縮性有限。 2.
oracle 並行伺服器通過使一組結點共享同一簇中的工作來擴充套件windownt的能力,提供高可用性和高伸縮性的簇的解決方案。如果windowsnt不能滿足需要,使用者可以把資料庫移到unix中。oracle的並行伺服器對各種unix平臺的叢集機制都有著相當高的整合度。
三、效能 1. sql server 多使用者時效能不佳 2. oracle 效能最高, 保持開放平臺下的tpc-d和tpc-c的世界記錄。
四、客戶端支援及應用模式 1. sql server c/s結構,只支援windows客戶,可以用ado、dao、oledb、odbc連線。 2.
oracle 多層次網路計算,支援多種工業標準,可以用odbc、jdbc、oci等網路客戶連線。
五、操作簡便 1. sql server 操作簡單,但只有圖形介面。 2. oracle 較複雜,同時提供gui和命令列,在windowsnt和unix下操作相同。
六、使用風險 1. sql server 完全重寫的**,經歷了長期的測試,不斷延遲,許多功能需要時間來證明。並不十分相容。
2. oracle 長時間的開發經驗,完全向下相容。得到廣泛的應用。
完全沒有風險。 最後**上 oracle貴過sqlsrver
4樓:逐月追心
<>是標準語法。可以移植到其他任何平臺。
是非標準語法。可移植性差。
但都是表示不等於的意思。
應用中儘量用<>
5樓:
在plsql中都能用,沒啥大區別。
oracle中的(+)怎麼用
6樓:網友
(+)就是連線。
譬如select a.*,b.* from a(+)= b就是乙個右連線,等同於select a.*,b.* from a right join b
select a.*,b.* from a = b(+)就是乙個左連線,等同於select a.*,b.* from a left join b
即" (+"所在位置的另一側為連線的方向,通常將全量集合與部分集合連線時,在部分集合的列後面帶上(+)以達到沒有匹配時,也要顯示出乙個null的效果。
明白了麼?
7樓:木頁龍
哪邊有(+)哪邊就允許為空。
8樓:逐_淵
有 (+的一方代表有可以為空,即副表。
oracle怎麼寫儲存過程,oracle 儲存過程,寫一個簡單的Oracle儲存過程
給你示例你參考下 建立儲存過程 create or replace procedure p name 儲存過程名字 i var in int,輸入引數1 o var out varchar2 輸出引數1 is v str varchar2 200 定義儲存過程內部的區域性變數 begin 下面是儲存...
oracle獲取某個月星期日,oracle 獲取某個月第一個星期日
sql select 2 case 3 when to char to date 201207 yyyymm d 1 4 then to date 201207 yyyymm 5 else 6 next day to date 201207 yyyymm 星期日 7 end as 第一個星期日 8 ...
oracle怎麼學知乎,學習oracle入門看什麼書知乎
我怎麼學知乎,這,你看看網上的一些解釋啥的,多找找專業性的訊息。ohnhks怎麼學於知乎這是必須的英語竺法 怎麼學知乎正常的情況下,在網上就是可以學著網上有很多這樣的課程,我建議你報一個這樣的課程學一下。二口是一個很系統的一個軟體他能囊括你所有的業務,從銷售,一,直到產生,發貨成本分析財務處理所以說...