1.在sql*plus下按回車不行是因?yàn)槟阍趕ql語句結(jié)束時(shí)沒有以;(分號(hào))結(jié)尾,以分號(hào)結(jié)尾再按回車就可以了
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)呼和浩特免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2.如果常用的話,建議使用pl/sql
developer,功能強(qiáng),易使用
Oracle執(zhí)行外部文件:
c:sqlplus
user/pwd@db
sql@new.sql
執(zhí)行多個(gè)sql文件:
1.把所有的文件都放在同一個(gè)目錄下,然后在命令行里執(zhí)行命令:
c:dir/b
d:/1.sql
會(huì)把所有的sql文件名都輸出到一個(gè)sql文件中。
2.用UltraEdit打開生成的sql文件,alt+C切換到column
mode,給所有的行前都添加一個(gè)"@",保存。
3.在sqlplus中執(zhí)行"@d:/1.sql"
如何避免''字符:
sql中可以傳遞參數(shù),但有時(shí)需要插入'',例:
SQL
select
'hello'
v
from
dual;
輸入
hello
的值:
hello
原值
1:
select
'hello'
v
from
dual
新值
1:
select
'hello'
v
from
dual
v
-----
hello
可以使用如下方法避免:
A:
SQL
select
chr(38)
||
'hello'
v
from
dual;
V
------
hello
B:
SQL
set
define
off
SQL
select
'hello'
v
from
dual;
V
------
hello
一。 概述Oracle存儲(chǔ)過程開發(fā)的要點(diǎn)是:
1; 使用Notepad文本編輯器,用Oracle PL/SQL編程語言寫一個(gè)存儲(chǔ)過程;
2; 在Oracle數(shù)據(jù)庫中創(chuàng)建一個(gè)存儲(chǔ)過程;
3; 在Oracle數(shù)據(jù)庫中使用SQL*Plus工具運(yùn)行存儲(chǔ)過程;
4; 在Oracle數(shù)據(jù)庫中修改存儲(chǔ)過程;
5; 通過編譯錯(cuò)誤調(diào)試存儲(chǔ)過程;
6; 刪除存儲(chǔ)過程;二。環(huán)境配置
包括以下內(nèi)容:
1; 一個(gè)文本編輯器Notepad;
2; Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 語句到Oracle database。
3; Oracle 10g express數(shù)據(jù)庫,它是免費(fèi)使用的版本;
需要的技巧:
4; SQL基礎(chǔ)知識(shí),包括插入、修改、刪除等
5; 使用Oracle's SQL*Plus工具的基本技巧;
6; 使用Oracle's PL/SQL 編程語言的基本技巧;三。寫一個(gè)存儲(chǔ)過程
在Notepad, 寫下:
CREATE OR REPLACE PROCEDURE skeletonISBEGINNULL;END;把文件存為skeleton.sql.
讓我們一行行遍歷這個(gè)存儲(chǔ)過程:
1 CREATE OR REPLACE PROCEDURE skeleton2 IS3 BEGIN
4 NULL;5 END;行1:CREATE OR REPLACE PROCEDURE 是一個(gè)SQL語句通知Oracle數(shù)據(jù)庫去創(chuàng)建一個(gè)叫做skeleton存儲(chǔ)過程, 如果存在就覆蓋它;行2:IS關(guān)鍵詞表明后面將跟隨一個(gè)PL/SQL體。
行3:BEGIN關(guān)鍵詞表明PL/SQL 體的開始。
四。創(chuàng)建一個(gè)存儲(chǔ)過程
SQL語句CREATE OR REPLACE PROCEDURE在Oracle數(shù)據(jù)庫中創(chuàng)建、編譯和保存一個(gè)存儲(chǔ)過程。
從Window打開SQL*Plus并且從SQL*Plus 登錄到你的數(shù)據(jù)庫;打開skeleton.sql文件。
在SQL命令提示符下輸入以下命令:
SQL@skeletonSQL/SQL*Plus裝載skeleton.sql文件的內(nèi)容到 SQL*Plus緩沖區(qū)并且執(zhí)行SQL*Plus語句;SQL*Plus 會(huì)通知你存儲(chǔ)過程已經(jīng)被成功地創(chuàng)建。
方法如下:
1:運(yùn)行cmd進(jìn)入命令行界面
2:進(jìn)入到存放批量sql的文件夾下面
3:輸入命令
sqlplus
數(shù)據(jù)庫名/密碼@數(shù)據(jù)庫
按回車鍵
4:輸入spool
指定路徑:\a.log
按回車鍵
(此步驟的主要作用就是追蹤批量執(zhí)行sql的日志,路徑隨便寫,只要能找到就行,a.log可以隨便起名,但是必須要.log后綴)
5:@start.sql
按回車鍵(在批量sql文件夾下寫一個(gè)文件,名字叫start.sql,其中在這個(gè)文件里面寫批量sql的文件名)
具體格式如下:@@sql的文件名.sql;
@@sql的文件名2.sql;
6:spool
off
(此時(shí)a.log中所有日志已經(jīng)寫入完畢)
7:exit
退出sqlplus
當(dāng)然只有一個(gè)sql文件,但是里面有多個(gè)insert語句,數(shù)據(jù)量非常大,此時(shí)也可以在命令狀態(tài)下執(zhí)行,前4步是一樣的,第五步就是@文件名.sql;
每步都是一次單獨(dú)的I/O,但是對(duì)于索引,由于經(jīng)常使用,絕大多數(shù)都已經(jīng)CACHE到內(nèi)存中,所以第一步的I/O經(jīng)常是邏輯I/O,即數(shù)據(jù)可以從內(nèi)存中得到。但對(duì)于第二部來說,如果表比較大,則其數(shù)據(jù)不可能全在內(nèi)存中,所以其I/O很有可能是物理I/O,這是一個(gè)機(jī)械操作,相對(duì)邏輯I/O來說,極其費(fèi)時(shí)間。所以如果對(duì)大表進(jìn)行索引掃描,取出的數(shù)據(jù)如果大于總量的5%-10%,使用索引掃描效率會(huì)下降很多。但是如果查詢的數(shù)據(jù)能全在索引中找到,就可以避免進(jìn)行第二步操作,避免了不必要的I/O,此時(shí)即使通過索引掃描取出的數(shù)據(jù)比較多,效率還是很高的。再者,如果sql語句中需要對(duì)索引列進(jìn)行排序,因?yàn)樗饕呀?jīng)預(yù)先排序好了,所以在執(zhí)行計(jì)劃索引進(jìn)行排序。
根據(jù)索引的類型和where限制條件的不同,一般有如下4中類型的索引掃描:
Join是一種試圖將兩個(gè)表結(jié)合在一起的謂詞,一次只能連接兩個(gè)表。Join可以并行的讀取兩個(gè)連接的表的數(shù)據(jù),但將表中符合限制條件的數(shù)據(jù)段讀入內(nèi)存形成row source后,join的其它步驟一般都是串行的。
目前為止,典型的join連接類型有3中:
如果row source已經(jīng)在關(guān)聯(lián)列上被排序,則該連結(jié)操作就不需要再進(jìn)行sort操作,這樣可以大大提高這種連接操作的連接速度,因?yàn)榕判蚴莻€(gè)極其耗費(fèi)資源的操作。預(yù)先排序的row source包括已經(jīng)被索引的列或row source已經(jīng)在前面的步驟中被排序了。另外,盡管合并兩個(gè)row source的過程是串行的,但是可以并行訪問這兩個(gè)row source(如并行讀入數(shù)據(jù),排序)。
排序是一個(gè)費(fèi)時(shí),費(fèi)資源的操作,基于這個(gè)原因,SMJ通常不是一種有效率的連接方式,但當(dāng)row source已經(jīng)排好序的前提下,SMJ的效率還是很可觀的。
各連接方法試用的場景:
參考文獻(xiàn)
文章名稱:oracle如何執(zhí)行 Oracle如何執(zhí)行函數(shù)
當(dāng)前網(wǎng)址:http://m.newbst.com/article22/hpohcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站策劃、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)