PLSQL函數(shù).doc_第1頁
PLSQL函數(shù).doc_第2頁
PLSQL函數(shù).doc_第3頁
PLSQL函數(shù).doc_第4頁
PLSQL函數(shù).doc_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

plsql常用方法在SQLPLUS下,實(shí)現(xiàn)中-英字符集轉(zhuǎn)換alter session set nls_language=AMERICAN;alter session set nls_language=SIMPLIFIED CHINESE;主要知識點(diǎn):一、有關(guān)表的操作1)建表create table test as select * from dept; -從已知表復(fù)制數(shù)據(jù)和結(jié)構(gòu)create table test as select * from dept where 1=2; -從已知表復(fù)制結(jié)構(gòu)但不包括數(shù)據(jù)2)插入數(shù)據(jù):insert into test select * from dept;二、運(yùn)算符算術(shù)運(yùn)算符:+ - * / 可以在select 語句中使用連接運(yùn)算符:| select deptno| dname from dept;比較運(yùn)算符: = = != = like between is null in邏輯運(yùn)算符:not and or集合運(yùn)算符: intersect ,union, union all, minus要求:對應(yīng)集合的列數(shù)和數(shù)據(jù)類型相同查詢中不能包含long 列列的標(biāo)簽是第一個集合的標(biāo)簽使用order by時,必須使用位置序號,不能使用列名例:集合運(yùn)算符的使用:intersect ,union, union all, minusselect * from emp intersect select * from emp where deptno=10 ;select * from emp minus select * from emp where deptno=10;select * from emp where deptno=10 union select * from emp where deptno in (10,20); -不包括重復(fù)行select * from emp where deptno=10 union all select * from emp where deptno in (10,20); -包括重復(fù)行三,常用 ORACLE 函數(shù)sysdate為系統(tǒng)日期 dual為虛表一)日期函數(shù)重點(diǎn)掌握前四個日期函數(shù)1,add_months返回日期加(減)指定月份后(前)的日期select sysdate S1,add_months(sysdate,10) S2,add_months(sysdate,5) S3 from dual;2,last_day 返回該月最后一天的日期select last_day(sysdate) from dual;3,months_between返回日期之間的月份數(shù)select sysdate S1, months_between(1-4月-04,sysdate) S2,months_between(1-4月-04,1-2月-04) S3 from dual4,next_day(d,day): 返回下個星期的日期,day為1-7或星期日-星期六,1表示星期日select sysdate S1,next_day(sysdate,1) S2,next_day(sysdate,星期日) S3 FROM DUAL5,round舍入到最接近的日期(day:舍入到最接近的星期日)select sysdate S1,round(sysdate) S2 ,round(sysdate,year) YEAR,round(sysdate,month) MONTH ,round(sysdate,day) DAY from dual6,trunc截斷到最接近的日期select sysdate S1,trunc(sysdate) S2,trunc(sysdate,year) YEAR,trunc(sysdate,month) MONTH ,trunc(sysdate,day) DAY from dual7,返回日期列表中最晚日期select greatest(01-1月-04,04-1月-04,10-2月-04) from dual二)字符函數(shù)(可用于字面字符或數(shù)據(jù)庫列)1,字符串截取select substr(abcdef,1,3) from dual2,查找子串位置select instr(abcfdgfdhd,fd) from dual3,字符串連接select HELLO|hello world from dual;4, 1)去掉字符串中的空格select ltrim( abc) s1,rtrim(zhang ) s2,trim( zhang ) s3 from dual2)去掉前導(dǎo)和后綴select trim(leading 9 from 9998767999) s1,trim(trailing 9 from 9998767999) s2,trim(9 from 9998767999) s3 from dual;5,返回字符串首字母的Ascii值select ascii(a) from dual6,返回ascii值對應(yīng)的字母select chr(97) from dual7,計算字符串長度select length(abcdef) from dual8,initcap(首字母變大寫) ,lower(變小寫),upper(變大寫)select lower(ABC) s1,upper(def) s2,initcap(efg) s3 from dual;9,Replaceselect replace(abc,b,xy) from dual;10,translateselect translate(abc,b,xx) from dual; - x是1位11,lpad 左添充 rpad 右填充(用于控制輸出格式)select lpad(func,15,=) s1, rpad(func,15,-) s2 from dual;select lpad(dname,14,=) from dept;12, decode實(shí)現(xiàn)if .then 邏輯select deptno,decode(deptno,10,1,20,2,30,3,其他) from dept;三)數(shù)字函數(shù)1,取整函數(shù)(ceil 向上取整,floor 向下取整)select ceil(66.6) N1,floor(66.6) N2 from dual;2, 取冪(power) 和 求平方根(sqrt)select power(3,2) N1,sqrt(9) N2 from dual;3,求余select mod(9,5) from dual;4,返回固定小數(shù)位數(shù) (round:四舍五入,trunc:直接截斷)select round(66.667,2) N1,trunc(66.667,2) N2 from dual;5,返回值的符號(正數(shù)返回為1,負(fù)數(shù)為-1)select sign(-32),sign(293) from dual;四)轉(zhuǎn)換函數(shù)1,to_char()將日期和數(shù)字類型轉(zhuǎn)換成字符類型1) select to_char(sysdate) s1,to_char(sysdate,yyyy-mm-dd) s2,to_char(sysdate,yyyy) s3,to_char(sysdate,yyyy-mm-dd hh12:mi:ss) s4,to_char(sysdate, hh24:mi:ss) s5,to_char(sysdate,DAY) s6 from dual;2) select sal,to_char(sal,99999) n1,to_char(sal,99,999) n2 from emp2, to_date()將字符類型轉(zhuǎn)換為日期類型insert into emp(empno,hiredate) values(8000,to_date(2004-10-10,yyyy-mm-dd);3, to_number() 轉(zhuǎn)換為數(shù)字類型select to_number(to_char(sysdate,hh12) from dual; /以數(shù)字顯示的小時數(shù)五)其他函數(shù)user:返回登錄的用戶名稱select user from dual;vsize:返回表達(dá)式所需的字節(jié)數(shù)select vsize(HELLO) from dual;nvl(ex1,ex2):ex1值為空則返回ex2,否則返回該值本身ex1(常用)例:如果雇員沒有傭金,將顯示0,否則顯示傭金select comm,nvl(comm,0) from emp;nullif(ex1,ex2):值相等返空,否則返回第一個值例:如果工資和傭金相等,則顯示空,否則顯示工資select nullif(sal,comm),sal,comm from emp;coalesce:返回列表中第一個非空表達(dá)式select comm,sal,coalesce(comm,sal,sal*10) from emp;nvl2(ex1,ex2,ex3) :如果ex1不為空,顯示ex2,否則顯示ex3如:查看有傭金的雇員姓名以及他們的傭金select nvl2(comm,ename,) as HaveCommName,comm from emp;六)分組函數(shù)max min avg count sum1,整個結(jié)果集是一個組1) 求部門30 的最高工資,最低工資,平均工資,總?cè)藬?shù),有工作的人數(shù),工種數(shù)量及工資總和select max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job) ,sum(sal) from emp where deptno=30;2, 帶group by 和 having 的分組1)按部門分組求最高工資,最低工資,總?cè)藬?shù),有工作的人數(shù),工種數(shù)量及工資總和select deptno, max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job) ,sum(sal) from emp group by deptno;2)部門30的最高工資,最低工資,總?cè)藬?shù),有工作的人數(shù),工種數(shù)量及工資總和select deptno, max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job) ,sum(sal) from emp group by deptno having deptno=30;3, stddev 返回一組值的標(biāo)準(zhǔn)偏差select deptno,stddev(sal) from emp group by deptno;variance 返回一組值的方差差select deptno,variance(sal) from emp group by deptno;4, 帶有rollup和cube操作符的Group Byrollup 按分組的第一個列進(jìn)行統(tǒng)計和最后的小計cube 按分組的所有列的進(jìn)行統(tǒng)計和最后的小計select deptno,job ,sum(sal) from emp group by deptno,job;select deptno,job ,sum(sal) from emp group by rollup(deptno,job);cube 產(chǎn)生組內(nèi)所有列的統(tǒng)計和最后的小計select deptno,job ,sum(sal) from emp group by cube(deptno,job);七、臨時表只在會話期間或在事務(wù)處理期間存在的表.臨時表在插入數(shù)據(jù)時,動態(tài)分配空間create global temporary table temp_dept(dno number,dname varchar2(10)on commit delete rows;insert into temp_dept values(10,ABC);commit;select * from temp_dept; -無數(shù)據(jù)顯示,數(shù)據(jù)自動清除on commit preserve rows:在會話期間表一直可以存在(保留數(shù)據(jù))on commit delete rows:事務(wù)結(jié)束清除數(shù)據(jù)(在事務(wù)結(jié)束時自動刪除表的數(shù)據(jù))1.0摘要/簡要說明該文檔內(nèi)容SQL是用來訪問關(guān)系型數(shù)據(jù)庫一種通用語言,其執(zhí)行特點(diǎn)是非過程化,即不用指明執(zhí)行的具體方法和途徑,而是簡單的調(diào)用相應(yīng)語句來直接取得結(jié)果即可。PL/SQL是一種過程化語言,因此可以用來實(shí)現(xiàn)比較復(fù)雜的業(yè)務(wù)邏輯。而本篇文章主要講述PLSQL的書寫及語法。2.0內(nèi)容/可自行增加小分類2.1等1、 PLSQL語法1.1、程序結(jié)構(gòu)PL/SQL程序都是以塊(block)為基本單位。整個PL/SQL塊分三部分:聲明部分(用declare開頭)、執(zhí)行部分(以 begin開頭)和異常處理部分(以exception開頭)。其中執(zhí)行部分是必須的,其他兩個部分可選。無論P(yáng)L/SQL程序段的代碼量有多大,其基本結(jié)構(gòu)就是由這三部分組成。而且每條語句均由分號隔開。/*聲明部分,以declare開頭*/DECLARE-declare statement/*執(zhí)行部分,以begin開頭,以end結(jié)束*/BEGIN-execute statement/*異常處理部分,以exception開始*/EXCEPTIONWHEN exceptioncase THEN-Exception handleEND;例子:/*聲明部分,以declare開頭*/DECLAREv_job NUMBER(10);/*執(zhí)行部分,以begin開頭*/BEGINDELETE FROM employee;INSERT INTO employee(depno, job)VALUES (20, 30);SELECT jobINTO v_jobFROM employeeWHERE depno = 20;dbms_output.PUT_LINE(v_job);/*異常處理部分,以exception開始*/EXCEPTIONWHEN no_data_found THENdbms_output.PUT_LINE(No data.);END;執(zhí)行結(jié)果:1.2、數(shù)據(jù)類型PL/SQL主要用于數(shù)據(jù)庫編程,所以其所有數(shù)據(jù)類型跟oracle數(shù)據(jù)庫里的字段類型是一一對應(yīng)的,大體分為數(shù)字型、布爾型、字符型和日期型。1.3、控制結(jié)構(gòu)PL/SQL程序段中有三種程序結(jié)構(gòu):條件結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和順序結(jié)構(gòu)。a)、條件結(jié)構(gòu)IF condition1 THENstatement1ELSEIF conditon2THENstatement2ELSEstatementelseEND IF;b)、循環(huán)結(jié)構(gòu)三種循環(huán)結(jié)構(gòu):簡單循環(huán)(也稱作無限循環(huán)):LOOPLoopstatementEND LOOP;WHILE 循環(huán):WHILE condition LOOPloopstatementEND LOOP;數(shù)字FOR循環(huán):FOR variable IN low_bound . . upper_boundLOOPloopstatementEND LOOP;通常,如果你總是希望循環(huán)主體執(zhí)行至少一次,那么你就應(yīng)當(dāng)使用一個簡單循環(huán)。如果你希望在第一次運(yùn)行循環(huán)主體之前檢查該條件,則應(yīng)使用 WHILE 循環(huán)。當(dāng)你計劃通過IN子句中指定的每個值(整數(shù)或記錄)進(jìn)行迭代時,則應(yīng)當(dāng)使用FOR循環(huán)。c)、順序結(jié)構(gòu)實(shí)際就是goto的運(yùn)用,不過從程序控制的角度來看,盡量少用goto可以使得程序結(jié)構(gòu)更加的清晰。函數(shù)是一種有零個或多個參數(shù)并且有一個返回值的程序。在SQL中Oracle內(nèi)建了一系列函數(shù),這些函數(shù)都可被稱為SQL或PL/SQL語句,函數(shù)主要分為兩大類:單行函數(shù)、組函數(shù) 。1、SQL中的單行函數(shù)SQL和PL/SQL中自帶很多類型的函數(shù),有字符、數(shù)字、日期、轉(zhuǎn)換、和混合型等多種函數(shù)用于處理單行數(shù)據(jù),因此這些都可被統(tǒng)稱為單行函數(shù)。這些函數(shù)均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等單行函數(shù)。SELECT ename,TO_CHAR(hiredate,day,DD-Mon-YYYY)FROM emp Where UPPER(ename) Like AL%ORDER BY SOUNDEX(ename)單行函數(shù)也可以在其他語句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句,認(rèn)證考試特別注意在SELECT語句中使用這些函數(shù),所以我們的注意力也集中在SELECT語句中。NULL和單行函數(shù)在如何理解NULL上開始是很困難的,就算是一個很有經(jīng)驗(yàn)的人依然對此感到困惑。NULL值表示一個未知數(shù)據(jù)或者一個空值,算術(shù)操作符的任何一個操作數(shù)為NULL值,結(jié)果均為提個NULL值,這個規(guī)則也適合很多函數(shù),只有CONCAT,DECODE,DUMP,NVL,REPLACE在調(diào)用了NULL參數(shù)時能夠返回非NULL值。在這些中NVL函數(shù)時最重要的,因?yàn)樗苤苯犹幚鞱ULL值,NVL有兩個參數(shù):NVL(x1,x2),x1和x2都是表達(dá)式,當(dāng)x1為null時返回X2,否則返回x1。下面我們看看emp數(shù)據(jù)表它包含了薪水、獎金兩項(xiàng),需要計算總的補(bǔ)償column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2不是簡單的將薪水和獎金加起來就可以了,如果某一行是null值那么結(jié)果就將是null,比如下面的例子:update emp set salary=(salary+bonus)*1.1這個語句中,雇員的工資和獎金都將更新為一個新的值,但是如果沒有獎金,即 salary + null,那么就會得出錯誤的結(jié)論,這個時候就要使用nvl函數(shù)來排除null值的影響。所以正確的語句是:update emp set salary=(salary+nvl(bonus,0)*1.1單行字符串函數(shù)單行字符串函數(shù)用于操作字符串?dāng)?shù)據(jù),他們大多數(shù)有一個或多個參數(shù),其中絕大多數(shù)返回字符串ASCII()c1是一字符串,返回c1第一個字母的ASCII碼,他的逆函數(shù)是CHR()SELECT ASCII(A) BIG_A,ASCII(z) BIG_z FROM empBIG_A BIG_z65 122CHR(i)NCHAR_CSi是一個數(shù)字,函數(shù)返回十進(jìn)制表示的字符select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z BCONCAT(,)c1,c2均為字符串,函數(shù)將c2連接到c1的后面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1、c2都為null,則返回null。他和操作符|返回的結(jié)果相同select concat(slobo ,Svoboda) username from dualusernameslobo SyobodaINITCAP()c1為一字符串。函數(shù)將每個單詞的第一個字母大寫其它字母小寫返回。單詞由空格,控制字符,標(biāo)點(diǎn)符號限制。select INITCAP(veni,vedi,vici) Ceasar from dualCeasarVeni,Vedi,ViciINSTR(,i,)c1,c2均為字符串,i,j為整數(shù)。函數(shù)返回c2在c1中第j次出現(xiàn)的位置,搜索從c1的第i個字符開始。當(dāng)沒有發(fā)現(xiàn)需要的字符時返回0,如果i為負(fù)數(shù),那么搜索將從右到左進(jìn)行,但是位置的計算還是從左到右,i和j的缺省值為1.select INSTR(Mississippi,i,3,3) from dualINSTR(MISSISSIPPI,I,3,3)11select INSTR(Mississippi,i,-2,3) from dualINSTR(MISSISSIPPI,I,3,3)2INSTRB(,i,j)與INSTR()函數(shù)一樣,只是他返回的是字節(jié),對于單字節(jié)INSTRB()等于INSTR()LENGTH()c1為字符串,返回c1的長度,如果c1為null,那么將返回null值。select LENGTH(Ipso Facto) ergo from dualergo10LENGTHb()與LENGTH()一樣,返回字節(jié)。lower()返回c的小寫字符,經(jīng)常出現(xiàn)在where子串中select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE %white%COLORNAMEWinterwhiteLPAD(,i,)c1,c2均為字符串,i為整數(shù)。在c1的左側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,參見RPAD。select LPAD(answer,7,) padded,answer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybeLTRIM(,)把c1中最左邊的字符去掉,使其第一個字符不在c2中,如果沒有c2,那么c1就不會改變。select LTRIM(Mississippi,Mis) from dualLTRppiRPAD(,i,)在c1的右側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,其他與LPAD相似RTRIM(,)把c1中最右邊的字符去掉,使其第后一個字符不在c2中,如果沒有c2,那么c1就不會改變。REPLACE(,)c1,c2,c3都是字符串,函數(shù)用c3代替出現(xiàn)在c1中的c2后返回。select REPLACE(uptown,up,down) from dualREPLACEdowntownSTBSTR(,i,)c1為一字符串,i,j為整數(shù),從c1的第i位開始返回長度為j的子字符串,如果j為空,則直到串的尾部。select SUBSTR(Message,1,4) from dualSUBSMessSUBSTRB(,i,)與SUBSTR大致相同,只是I,J是以字節(jié)計算。SOUNDEX()返回與c1發(fā)音相似的詞select SOUNDEX(dawes) Dawes SOUNDEX(daws) Daws, SOUNDEX(dawson) from dualDawes Daws DawsonD200 D200 D250TRANSLATE(,)將c1中與c2相同的字符以c3代替select TRANSLATE(fumble,uf,ar) test from dualTEXTrambleTRIM( from c3)將c3串中的第一個,最后一個,或者都刪除。select TRIM( space padded ) trim from dual TRIMspace paddedUPPER()返回c1的大寫,常出現(xiàn)where子串中select name from dual where UPPER(name) LIKE KI%NAMEKING單行數(shù)字函數(shù)單行數(shù)字函數(shù)操作數(shù)字?jǐn)?shù)據(jù),執(zhí)行數(shù)學(xué)和算術(shù)運(yùn)算。所有函數(shù)都有數(shù)字參數(shù)并返回數(shù)字值。所有三角函數(shù)的操作數(shù)和值都是弧度而不是角度,oracle沒有提供內(nèi)建的弧度和角度的轉(zhuǎn)換函數(shù)。ABS()返回n的絕對值A(chǔ)COS()反余玄函數(shù),返回-1到1之間的數(shù)。n表示弧度select ACOS(-1) pi,ACOS(1) ZERO FROM dualPI ZERO3.14159265 0ASIN()反正玄函數(shù),返回-1到1,n表示弧度ATAN()反正切函數(shù),返回n的反正切值,n表示弧度。CEIL()返回大于或等于n的最小整數(shù)。COS()返回n的余玄值,n為弧度COSH()返回n的雙曲余玄值,n 為數(shù)字。select COSH() FROM dualCOSH(1.4)2.15089847EXP()返回e的n次冪,e=2.71828183.FLOOR()返回小于等于N的最大整數(shù)。LN()返回N的自然對數(shù),N必須大于0LOG(,)返回以n1為底n2的對數(shù)MOD()返回n1除以n2的余數(shù),POWER(,)返回n1的n2次方ROUND(,)返回舍入小數(shù)點(diǎn)右邊n2位的n1的值,n2的缺省值為0,這回將小數(shù)點(diǎn)最接近的整數(shù),如果n2為負(fù)數(shù)就舍入到小數(shù)點(diǎn)左邊相應(yīng)的位上,n2必須是整數(shù)。select ROUND(12345,-2),ROUND(12345.54321,2) FROM dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54SIGN()如果n為負(fù)數(shù),返回-1,如果n為正數(shù),返回1,如果n=0返回0.SIN()返回n的正玄值,n為弧度。SINH()返回n的雙曲正玄值,n為弧度。SQRT()返回n的平方根,n為弧度TAN()返回n的正切值,n為弧度TANH()返回n的雙曲正切值,n為弧度TRUNC(,)返回截尾到n2位小數(shù)的n1的值,n2缺省設(shè)置為0,當(dāng)n2為缺省設(shè)置時會將n1截尾為整數(shù),如果n2為負(fù)值,就截尾在小數(shù)點(diǎn)左邊相應(yīng)的位上。單行日期函數(shù)單行日期函數(shù)操作DATA數(shù)據(jù)類型,絕大多數(shù)都有DATA數(shù)據(jù)類型的參數(shù),絕大多數(shù)返回的也是DATA數(shù)據(jù)類型的值。ADD_MONTHS(,i)返回日期d加上i個月后的結(jié)果。i可以使任意整數(shù)。如果i是一個小數(shù),那么數(shù)據(jù)庫將隱式的他轉(zhuǎn)換成整數(shù),將會截去小數(shù)點(diǎn)后面的部分。LAST_DAY()函數(shù)返回包含日期d的月份的最后一天MONTHS_BETWEEN(,)返回d1和d2之間月的數(shù)目,如果d1和d2的日的日期都相同,或者都使該月的最后一天,那么將返回一個整數(shù),否則會返回的結(jié)果將包含一個分?jǐn)?shù)。NEW_TIME(,)d1是一個日期數(shù)據(jù)類型,當(dāng)時區(qū)tz1中的日期和時間是d時,返回時區(qū)tz2中的日期和時間。tz1和tz2時字符串。NEXT_DAY(,)返回日期d后由dow給出的條件的第一天,dow使用當(dāng)前會話中給出的語言指定了一周中的某一天,返回的時間分量與d的時間分量相同。select NEXT_DAY(01-Jan-2000,Monday) 1st Monday,NEXT_DAY(01-Nov-2004,Tuesday)+7 2nd Tuesday) from dual;1st Monday 2nd Tuesday03-Jan-2000 09-Nov-2004ROUND(,)將日期d按照fmt指定的格式舍入,fmt為字符串。SYADATE函數(shù)沒有參數(shù),返回當(dāng)前日期和時間。TRUNC(,)返回由fmt指定的單位的日期d.單行轉(zhuǎn)換函數(shù)單行轉(zhuǎn)換函數(shù)用于操作多數(shù)據(jù)類型,在數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換。CHARTORWID()c 使一個字符串,函數(shù)將c轉(zhuǎn)換為RWID數(shù)據(jù)類型。SELECT test_id from test_case where rowid=CHARTORWID(AAAA0SAACAAAALiAAA)CONVERT(,)c尾字符串,dset、sset是兩個字符集,函數(shù)將字符串c由sset字符集轉(zhuǎn)換為dset字符集,sset的缺省設(shè)置為數(shù)據(jù)庫的字符集。HEXTORAW()x為16進(jìn)制的字符串,函數(shù)將16進(jìn)制的x轉(zhuǎn)換為RAW數(shù)據(jù)類型。RAWTOHEX()x是RAW數(shù)據(jù)類型字符串,函數(shù)將RAW數(shù)據(jù)類轉(zhuǎn)換為16進(jìn)制的數(shù)據(jù)類型。ROWIDTOCHAR()函數(shù)將ROWID數(shù)據(jù)類型轉(zhuǎn)換為CHAR數(shù)據(jù)類型。TO_CHAR(,)x是一個data或number數(shù)據(jù)類型,函數(shù)將x轉(zhuǎn)換成fmt指定格式的char數(shù)據(jù)類型,如果x為日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的語言。如果x為數(shù)字nlsparm=NLS_NUMERIC_CHARACTERS 用來指定小數(shù)位和千分位的分隔符,以及貨幣符號。NLS_NUMERIC_CHARACTERS =dg, NLS_CURRENCY=stringTO_DATE(,)c表示字符串,fmt表示一種特殊格式的字符串。返回按照fmt格式顯示的c,nlsparm表示使用的語言。函數(shù)將字符串c轉(zhuǎn)換成date數(shù)據(jù)類型。TO_MULTI_BYTE()c表示一個字符串,函數(shù)將c的擔(dān)子截字符轉(zhuǎn)換成多字節(jié)字符。TO_NUMBER(,)c表示字符串,fmt表示一個特殊格式的字符串,函數(shù)返回值按照fmt指定的格式顯示。nlsparm表示語言,函數(shù)將返回c代表的數(shù)字。TO_SINGLE_BYTE()將字符串c中得多字節(jié)字符轉(zhuǎn)化成等價的單字節(jié)字符。該函數(shù)僅當(dāng)數(shù)據(jù)庫字符集同時包含單字節(jié)和多字節(jié)字符時才使用其它單行函數(shù)BFILENAME(,)dir是一個directory類型的對象,file為一文件名。函數(shù)返回一個空的BFILE位置值指示符,函數(shù)用于初始化BFILE變量或者是BFILE列。DECODE(,)x是一個表達(dá)式,m1是一個匹配表達(dá)式,x與m1比較,如果m1等于x,那么返回r1,否則,x與m2比較,依次類推m3,m4,m5.直到有返回結(jié)果。DUMP(,)x是一個表達(dá)式或字符,fmt表示8進(jìn)制、10進(jìn)制、16進(jìn)制、或則單字符。函數(shù)返回包含了有關(guān)x的內(nèi)部表示信息的VARCHAR2類型的值。如果指定了n1,n2那么從n1開始的長度為n2的字節(jié)將被返回。EMPTY_BLOB()該函數(shù)沒有參數(shù),函數(shù)返回 一個空的BLOB位置指示符。函數(shù)用于初始化一個BLOB變量或BLOB列。EMPTY_CLOB()該函數(shù)沒有參數(shù),函數(shù)返回 一個空的CLOB位置指示符。函數(shù)用于初始化一個CLOB變量或CLOB列。GREATEST()exp_list是一列表達(dá)式,返回其中最大的表達(dá)式,每個表達(dá)式都被隱含的轉(zhuǎn)換第一個表達(dá)式的數(shù)據(jù)類型,如果第一個表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個,那么返回的結(jié)果是varchar2數(shù)據(jù)類型,同時使用的比較是非填充空格類型的比較。LEAST()exp_list是一列表達(dá)式,返回其中最小的表達(dá)式,每個表達(dá)式都被隱含的轉(zhuǎn)換第一個表達(dá)式的數(shù)據(jù)類型,如果第一個表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個,將返回的結(jié)果是varchar2數(shù)據(jù)類型,同時使用的比較是非填充空格類型的比較。UID該函數(shù)沒有參數(shù),返回唯一標(biāo)示當(dāng)前數(shù)據(jù)庫用戶的整數(shù)。USER返回當(dāng)前用戶的用戶名USERENV()基于opt返回包含當(dāng)前會話信息。opt的可選值為:ISDBA 會話中SYSDBA腳色響應(yīng),返回TRUESESSIONID 返回審計會話標(biāo)示符ENTRYID 返回可用的審計項(xiàng)標(biāo)示符INSTANCE在會話連接后,返回實(shí)例標(biāo)示符。該值只用于運(yùn)行Parallel 服務(wù)器并且有 多個實(shí)例的情況下使用。LANGUAGE返回語言、地域、數(shù)據(jù)庫設(shè)置的字符集。LANG返回語言名稱的ISO縮寫。TERMINAL為當(dāng)前會話使用的終端或計算機(jī)返回操作系統(tǒng)的標(biāo)示符。VSIZE()x是一個表達(dá)式。返回x內(nèi)部表示的字節(jié)數(shù)。SQL中的組函數(shù)組函數(shù)也叫集合函數(shù),返回基于多個行的單一結(jié)果,行的準(zhǔn)確數(shù)量無法確定,除非查詢被執(zhí)行并且所有的結(jié)果都被包含在內(nèi)。與單行函數(shù)不同的是,在解析時所有的行都是已知的。由于這種差別使組函數(shù)與單行函數(shù)有在要求和行為上有微小的差異.2、組(多行)函數(shù)與單行函數(shù)相比,oracle提供了豐富的基于組的,多行的函數(shù)。這些函數(shù)可以在select或select的having子句中使用,當(dāng)用于select子串時常常都和GROUP BY一起使用。AVG(DISYINCT|ALL)返回數(shù)值的平均值。缺省設(shè)置為ALL.SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413COUNT(*|DISTINCT|ALL )返回查詢中行的數(shù)目,缺省設(shè)置是ALL,*表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論