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完全不懂 “:= ” 这是什么意思? 展开
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完全不懂 “:= ” 这是什么意思? 展开
3个回答
展开全部
注释1声名了一个NUMBER类型的变量,总长7位,小数点后2位,名是ANNUAL_SALAZY
注释2中的 select into 是不是将 A.SAL 赋给了变量ANNUAL_SALAZY中
注释3 把ANNUAL_SALAZY的值作为函数的返回值。
注释4EXCEPTION是异常处理。当上面程序出现错误或Select语句查不到记录时才执行。
此函数总意思是:通过参数USERNAME调用了ANNUAL_INCOMEC函数,查找EMP表中名字为与参数一致的雇员的薪水(sal)。查到记录了返回该雇员的薪水;没查到则返回一个值空值。
注释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 原表; --这里目标表和原表的列一一对应
展开全部
注释1是 NUMBER类型的变量;
注释2是变量不是表
注释3是返回执行完这个函数的返回值,返回的值是在下面通过执行相应的语句返回的值
注释1,2,3中 出现的同一个ANNUAL_SALAZY 意义上是变量
注释4是赋值的意思
注释2是变量不是表
注释3是返回执行完这个函数的返回值,返回的值是在下面通过执行相应的语句返回的值
注释1,2,3中 出现的同一个ANNUAL_SALAZY 意义上是变量
注释4是赋值的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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语句构成。
用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如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语句构成。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询