从SQL表达式中调用函数的限制

为了从SQL表达式中调用函数,一个用户定义函数必须:

是存储函数

只接受IN函数

只接收有受的SQL数据类型,而不接受PL/SQL数据类型

返回数据类型为有效的SQL数据类型,而非PL/SQL特殊的类型

从SQL表达式中调用的函数不能包含DML语句

从在表T上的UPDATE/DELETE语句中调用的函数,函数内容不能包含在同一个表T上的DML

从在表T上的UPDATE或DELETE语句中调用的函数,函数内容不能查询同一个表

从SQL语句中调用的函数不能包含结束事物的语句

在函数中不允许调用违反上一级约束的子程序

 

自定义函数

函数功能:输入工号,返回薪水

create or replace function get_sal

(p_id IN employees.employee_id%type)

return number

is

v_salary employees.salary%type:=0;

begin

select salary into v_salary from employees where employee_id=p_id;

return v_salary;

end get_sal;

/

select get_sal(employee_id) from employees;

Tax函数

create or replace function tax(p_value in number)

return number is

begin

return(p_value*0.08);

end tax;

/

select employee_id,last_name,salary,tax(salary) from employees where department_id=100;

删除函数

DROP FUNCTION FUNCTION_NAME

Show errors可显示编译错误(如果有的话)

显示工资等级函数

create or replace function f_grade(v_eno in employees.employee_id%type)

return varchar2 is

v_sal employees.salary%type;

v_result varchar2(50);

begin

select salary into v_sal from employees where employee_id=v_eno;

case

when v_sal>0 and v_sal<2000 then

v_result:='little case';

when v_sal>2000 and v_sal<5000 then

v_result:='medium case';

when v_sal>5000 then

v_result:='big case';

else

v_result:='no case';

end case;

return v_result;

end f_grade;

/

PL/SQL自定义函数的更多相关文章

  1. Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

    PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...

  2. SQL自定义函数split分隔字符串

    SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max ...

  3. MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerable<T>数据源

    MS SQL自定义函数IsPositiveInteger   判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON ...

  4. sql自定义函数及C#中调用

    1.在C#中调用sql自定义函数 1.1 标量值函数 sql语句调用 select  dbo.GetClassIDWithName(1) string strSql = string.Format(& ...

  5. Spark SQL 自定义函数类型

    Spark SQL 自定义函数类型 一.spark读取数据 二.自定义函数结构 三.附上长长的各种pom 一.spark读取数据 前段时间一直在研究GeoMesa下的Spark JTS,Spark J ...

  6. PL/SQL之--函数

    一.函数 函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序.oracle处理使用系统提供的函数之外,用户还可以自己定义函数.函数通常被作为一个表达式来调用或存储过程的一个 ...

  7. oracle pl/sql split函数

    在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号 ...

  8. sql 自定义函数--固定格式字符转时间类型

    遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用conver ...

  9. pl/sql 过程 函数(写一个过程,输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金))

    1.编写过程,输入三角形三个表的长度.在控制台打印三角形的面积. create or replace procedure pro_s(v_a number,v_b number,v_c number) ...

随机推荐

  1. mysql报错“Starting MySQL...The server quit without updating PID file”处理

    http://blog.csdn.net/lzq123_1/article/details/51354179 注意:要将/usr/bin/mysql_install_db替换成 /usr/bin/my ...

  2. JavaWeb学习总结(十五)Jsp中提交的表单的get和post的两种方式

    两者的比较: Get方式: 将请求的参数名和值转换成字符串,并附加在原来的URL之后,不安全 传输的数据量较小,一般不能大于2KB: post方式: 数量较大: 请求的参数和值放在HTML的请求头中, ...

  3. oracle 排序字段自增长

    <insert id="insertGoodsDescription" parameterClass="goodsDescription" > &l ...

  4. #define #undef

    #include <stdio.h> int main( void ) { #define MAX 200 printf("MAX= %d\n",MAX); #unde ...

  5. thinkphp 多对多关联模型(转)

    先建立一个模型 1 2 3 4 5 6 7 8 9 10 11 12 <?php  class UserModel extends RelationModel{      protected $ ...

  6. 怎么修改mysql主键(id)的值为自增

    alter table tb_name modify id int auto_increment primary key

  7. 泛型实体类List<>绑定到repeater

    后台代码: private void bindnewslist() { long num = 100L; List<Model.news> news = _news.GetList(out ...

  8. Android 4.0的图形硬件加速及绘制技巧

    转:http://zuiniuwang.blog.51cto.com/3709988/721798 从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GP ...

  9. Android 使用tomcat搭建HTTP文件下载服务器

    上一篇: Android 本地搭建Tomcat服务器供真机测试 1.假设需要下载的文件目录是D:\download1(注意这里写了个1,跟后面的名称区分) 2.设置 tomcat 的虚拟目录.在 {t ...

  10. C# XtraGrid的行指示器(RowIndicator)行号以及图标设置

    以下是几种对Xtragrid的行指示器的几种操作方法,在实际场景当中,很多都需要用到,直接上效果图和源码 一.基本篇—设置表头行号 1.效果图 2.实现方法 需要对XtraGrid事件CustomDr ...