plsql执⾏oracle函数,PLSQL中Function和Procedures的简单使
⽤sql语句替换表中内容
FUNCTION(函数⽅法):
作⽤:
⽤于返回特定的数据(数据处理),关注点在于返回的结果。
格式:
CREATEORREPLACEFUNCTION函数名(参数 类型)
RETURN类型
IS名称 类型
BEGIN函数主体
EXCEPTION
END函数名;
关键字:
RETRUN : 定义函数返回的类型;
IS :定义变量,可⽤于赋值;
BEGIN :函数⽅法体,结束通过return()返回结果;
EXCEPTION :异常处理(可省略);
END :函数结束符。
⽰例:
CREATEORREPLACEFUNCTIONget_employee_salary(empoyee_idNUMBER)
RETURNNUMBER
IS
salaryNUMBER;
BEGIN
SELECTe.salary
INTOsalary
FROMemployees e
RETURN(salary);
EXCEPTION
WHENno_data_foundTHEN
RETURN(-1);
WHENOTHERSTHEN
RETURN(-2);
ENDget_employee_salary;
测试:
⽅式⼀: ⿏标右击⽅法名,在出现的菜单中点击test,会出现Test Window窗⼝,且窗⼝下⽅有⽅法参数的输⼊框(Variable),输⼊对应参数后,按f8即执⾏测试,并返回测试结果;
⽅式⼆:在SQL Window窗⼝,编写sql语句直接调⽤function。
⽅法体中可能⽤到的语句:
1. 条件判断:
IF条件
ELSE
END IF;
2. 循环遍历:
FOR 变量名IN(SELECT语句)
LOOP RESULT := 变量名.对应字段;
END LOOP;
2. 将查询结果赋值给变量:
SELECT 字段INTO 变量名FROM 表名where 条件
PROCEDURE(存储过程):
作⽤:
⽤作完成特定功能的sql语句,关注点在于过程中的处理。
格式:
CREATEORREPLACEPROCEDURE名称(参数名称in/out类型)
BEGIN程序体
EXCEPTION
END 名称;
关键字:
输⼊参数使⽤in关键字标识
输出参数使⽤out参数表⽰
( Procedure的参数模式:
IN: 默认模式.在调⽤Procedure的时候,Procedure的实参的值被传递到该Procedure,在Procedure的内部,Procedure的形参是只读的:
OUT: 在调⽤Procedure时,任何的Procedure的实参都将被忽略,在Procedure的内部,形参是只可写的:
IN OUT: IN与OUT的组合.在调⽤Procedure的时候,实参的值可以被传递给该Procedure;在其内部,形参也可以被读出也可以被写⼊;该Procedure结束时,控制会返回给控制环境,⽽形参的内容将赋给调⽤时的实参. )
⽰例:
CREATEORREPLACEPROCEDUREupdate_employee_salary(empoyee_idINNUMBER,
employee_nameOUTVARCHAR2,
salaryOUTVARCHAR2)
IS
BEGIN
BEGIN
SELECTe.first_name||''||e.last_name employee_name,
e.salary
INTOemployee_name,
salary
FROMemployees e
EXCEPTION
WHENno_data_foundTHEN
employee_name:='E';
salary:=0;
WHENOTHERSTHEN
employee_name:='N';
salary:=0;
END;
UPDATEemployees e
SETe.salary=e.salary+2000
ENDupdate_employee_salary;
----------------------------------------------------------------------------------------------------------------调⽤及测试⽅法:
1. Command Window:
execute/exec ⽅法名(参数..);
2. SQL Window:
declare
参数名类型:=值;
begin
⽅法名(参数);
dbms_output.put_line(参数);---输出打印作⽤
end;
3.右击该过程名,并点击test,输⼊相应参数,然后f8执⾏.
---------------------------------------------------------------------------------------------------------------
⽅法体中可能⽤到的语句:
SELECT字段INTO变量名FROM表名WHERE条件;将查的结果赋值给变量
SELECT字段INTO变量名FROM DUAL;将字段值赋值给变量
遇到例如像 '''' || p_calcNo ||''''这样的语句,红⾊'作⽤是对字符串定界作⽤, 蓝⾊''作为字符串⼀部分(plsql中需要⽤''来表⽰'),下⾯有详细解释;知识补充:
可能⽤到的函数:
1)处理字符的函数
||或CONCAT---并置运算符。
格式∶CONCAT(STRING1, STRING2)
例:’ABC’|| ’DE’=’ABCDE’
CONCAT(‘ABC’,’DE’) =’ABCDE’
ASCII---返回字符的ASCII码。
例:ASCII(‘A’) = 65
CHR---返回指定ASCII码的字符。
例:CHR(65) = ‘A’
INSTR---搜索⼦串位置
格式∶INSTR(STRING , SET[ , 开始位置[ , 出现次数]])
例∶ INSTR (‘this is a test’ , ‘i’ , 1,2)=6
INITCAP---将字符串每个单词⾸字母均变为⼤写
例: INITCAP(‘this is a test’)=’ This Is A Test’’
LENGTH----计算串长
格式∶ LENGTH(string)
RPAD,LPAD---右填充、左填充。默认为填充空格。
格式: RPAD(字符串 , 字符个数 , 填充字符)
例: RPAD(‘ABC’ , 6 , ’H’)=’ABCHHH’
LTRIM,RTRIM-----左右截断。默认为删除空格。
格式∶ LTRIM(STRING[,’SET’])
例∶ LTRIM(‘***tes*t***’ , ’*’)=’ tes*t***’
LOWER----将字符串转换为⼩写
格式∶LOWER(string)
UPPER----将字符串转换为⼤写
格式∶UPPER(string)
SUBSTR----提取⼦串。START为正数时从左开始、为负数时从右开始
格式∶ SUBSTR(STRING , START [ , COUNT])
例∶ SUBSTR(‘WORDSTAR’ , 2 , 3)=’ ORD’
REPLACE---搜索指定字符串并替换
格式∶REPLACE(string , substring , replace_string)
例∶ REPLACE(‘this is a test’ , ‘this’ , ‘that an’)=’that an is a test’TRIM---删除字符串前缀或尾随字符
格式∶TRIM( [LEADING | TRAILING |BOTH] [ trimchar FROM ] string)
LEADING---删除前缀字符
TRAILING---删除后缀字符
BOTH---前后缀字符均删除(默认⽅式)
Trimchar---指定删除的字符
注:INSTR,LENGTH,SUBSTR加B时针对字节.
2)处理数字的函数
LEAST---返回参数列表中的最⼩值。返回参数类型以第⼀参数为准
格式∶LEAST(value,value,value,value,value,….)value为数字或字符串
例∶ LEAST(1,2,5,-10,9)= -10
SIGN---返回参数的符号位,负数--- -1,0----0,正数---1
格式∶SIGN(value)
CELL---返回⼤于等于特定值的最⼩整数
格式∶CELL(value)
例∶ CELL(-10,9)= -10
3)处理⽇期
SYSDATE---系统时间。精确⾄秒
ADD_MONTH—加减⽉份。numvalue为负数时减去相应⽉份
格式: ADD_MONTH (data1,numvalue)
MONTHS_BETWEEN---返回两⽇期之间的⽉数,当data1
格式: MONTHS_BETWEEN(data1,data2)
LAST_DAY---返回指定⽇期的最后⼀天。
格式∶LAST_DAY(date)
TRUNC---将⽇期按照format格式截短,缺省为DD(不是四舍五⼊)
格式:TRUNC(date, format)
例∶ TRUNC (to_date(‘2002-11-07’,’yyyy-mm-dd’),’MM’)= 2002-11-01 4)分组函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论