Oracle 自定义函数的问题

CREATEORREPLACEFUNCTIONANNUAL_INCOMEC(USERNAMEVARCHAR2)RETURNNUMBERISANNUAL_SALAZYNUM... CREATE OR REPLACE FUNCTION ANNUAL_INCOMEC(USERNAME VARCHAR2)
RETURN NUMBER IS
ANNUAL_SALAZY NUMBER(7, 2); --1
BEGIN
SELECT A.SAL INTO ANNUAL_SALAZY FROM scott.EMP A WHERE A.ENAME = USERNAME;--2
RETURN ANNUAL_SALAZY;--3
EXCEPTION --4 开始
WHEN no_data_found THEN ANNUAL_SALAZY:=0;
RETURN ANNUAL_SALAZY; --4结束
END;

--我想知道注释1 是不是声名了一个 NUMBER类型的变量?
--注释2中的 select into 是不是将 A.SAL 插入到 ANNUAL_SALAZY 表中?
--注释3 是返回值吧,返回值的值是在哪里赋值的?
--注释1,2,3中 出现的同一个ANNUAL_SALAZY 意义上一个东西吗?究竟是变量 还是表?
--注释4完全不懂 “:= ” 这是什么意思?
展开
 我来答
随o天
2012-11-11 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2019万
展开全部
注释1声名了一个NUMBER类型的变量,总长7位,小数点后2位,名是ANNUAL_SALAZY
注释2中的 select into 是不是将 A.SAL 赋给了变量ANNUAL_SALAZY中
注释3 把ANNUAL_SALAZY的值作为函数的返回值。
注释4EXCEPTION是异常处理。当上面程序出现错误或Select语句查不到记录时才执行。
此函数总意思是:通过参数USERNAME调用了ANNUAL_INCOMEC函数,查找EMP表中名字为与参数一致的雇员的薪水(sal)。查到记录了返回该雇员的薪水;没查到则返回一个值空值。
追问
select  into  在oracle 是一个赋值操作对吗? 并且select into只干一件事  就是赋值,我的理解对吗

它并不是 复制表的意思 是吗
你能把注释2在重新说一下么,我没看明白
追答
Oracle的赋值语句两种形式:变量:=新值  和 select 表达式或字段 into 变量 from 表 ...
select ...into赋值不只是赋值,它首先是完成查找计算功能,然后再把查找到的值赋给变量。
复制表的方法有两种:
1、表的结构和数据一起复制 create table 新表 as select * from 原表;
2、只复制表的数据 insert into 目标表 select * from 原表; --这里目标表和原表的列一一对应
klmy_df
2012-11-12
知道答主
回答量:29
采纳率:0%
帮助的人:4.3万
展开全部
注释1是 NUMBER类型的变量;
注释2是变量不是表
注释3是返回执行完这个函数的返回值,返回的值是在下面通过执行相应的语句返回的值
注释1,2,3中 出现的同一个ANNUAL_SALAZY 意义上是变量
注释4是赋值的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
N_0_1
高粉答主

2015-10-31 · 关注我不会让你失望
知道大有可为答主
回答量:8628
采纳率:47%
帮助的人:820万
展开全部
Oracle自定义函数
用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其中,value被称为参数。函数参数有3种类型。
IN 参数类型:表示输入给函数的参数。
OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序。
IN OUT参数类型:表示参数既可以传值也可以被赋值。
1、语法格式:
SQL语法方式创建的语法格式为:
CREATE OR REPLACE FUNCTION function_name /*函数名称*/
(
Parameter_name1,mode1 datatype1,            /*参数定义部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3

)
RETURN return_datatype                /*定义返回值类型*/
IS/AS
BEGIN
Function_body                  /*函数体部分*/
RETURN scalar_expression /*返回语句*/
END function_name;

说明:
function_name::用户定义的函数名。函数名必须符合标示符的定义规则,对其所有者来说,该名在数据库中是唯一的。
parameter:用户定义的参数。用户可以定义一个或多个参数。
mode:参数类型。
datatype:用户定义参数的数据类型。
return_type::用户返回值的数据类型。
函数返回scalar_expression表达式的值,function_body函数体由pl/sql语句构成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式