首页 > 数据库 >oracle plsql 自定义函数

oracle plsql 自定义函数

时间:2023-04-26 20:33:04浏览次数:32  
标签:plsql 自定义 数据类型 RET VARCHAR2 SQL oracle HELLO 函数


例如:

CREATE OR REPLACE FUNCTION HELLO(str IN VARCHAR2)
RETURN VARCHAR2
IS
  RET VARCHAR2(20);
BEGIN
  RET := 'Hello ' || str;
  DBMS_OUTPUT.put_line(RET);
  RETURN RET;
END;



执行:

SELECT HELLO('yang') FROM DUAL;



删除:

DROP FUNCTION HELLO;



不能像java里那样进行重载。

从SQL中调用函数的限制

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


•只接受IN参数


•只接受有效的SQL 数据类型,而不接受PL/SQL特殊的类型


 作为参数


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


 类型


• 在一个表上的 UPDATE 或 DELETE 语句中调用的函数不能查询及更新同一个表


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



过程与函数:

oracle plsql 自定义函数_SQL



标签:plsql,自定义,数据类型,RET,VARCHAR2,SQL,oracle,HELLO,函数
From: https://blog.51cto.com/u_1002776/6228856

相关文章

  • oracle pl sql 隐式游标SQL
    EMP表在SCOTT用户下。用SCOTT/TIGER登录。代码:BEGINUPDATEEMPSETENAME='SMITH'WHEREEMPNO=7369;DBMS_OUTPUT.put_line('SQL%ROWCOUNT='||SQL%ROWCOUNT);IFSQL%ISOPENTHENDBMS_OUTPUT.put_line('SQL%ISOPEN');ELSEDBM......
  • oracle exp/imp 导入导出数据
    exphibernate/hibernate@orclfile=c:\emp.dmptables=(hibernate.emp)imphibernate/hibernate@orclfile=c:\emp.dmpimp前,先要删除表,否则导入会失败。语法:EXP有三种主要的方式(完全、用户、表) 完全EXPSYSTEM/MANAGERBUFFER=64000FILE=C:\FULL.DMPFULL=Y 如果要执行完全......
  • oracle 分析函数 RANK、DENSE_RANK、ROW_NUMBER
    Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。 Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条......
  • oracle 高级分组 GROUPING SETS
    用SCOTT/TIGER登录。groupingsets就是对参数中的每个参数做group,也就是有几个参数做几次group。SQL:SELECTJOB,DEPTNO,SUM(SAL)FROMEMPGROUPBYGROUPINGSETS(JOB,DEPTNO);结果:......
  • oracle 分析函数 NTILE
    用SCOTT/TIGER登录。NTILE函数对一个数据分区中的有序结果集进行划分,将其分组为各个桶,并为每个小组分配一个唯一的组编号。SQL:SELECTENAME,SAL,NTILE(2)OVER(ORDERBYSALASCNULLSLAST)FROMEMP;结果:SQL:SELECTENAME,SAL,NTILE(3)OVER(ORDERBYSALASCNULLSLAST......
  • oracle 高级分组 GROUPING
    用SCOTT/TIGER登录。GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。SQL:SELECTGROUPING(JOB),JOB,SUM(SAL)FROMEMPGROUPBYROLLUP(JOB);结果:......
  • oracle 高级分组 GROUPING_ID
    用SCOTT/TIGER登录。GROUPING_ID可以接收多个列,这几个列都不为空时,返回0,只要有一个为空,则返回1,如果都为空,则返回3。SQL:SELECTGROUPING_ID(JOB,DEPTNO),JOB,DEPTNO,SUM(SAL)FROMEMPGROUPBYROLLUP(JOB,DEPTNO);结果:......
  • oracle 分析函数 FIRST_VALUE、LAST_VALUE
    用SCOTT/TIGER登录。FIRST_VALUE、LAST_VALUE是两个分析函数。返回结果集中排在第一位和最后一位的值。使用FIRST_VALUE:SELECTDEPTNO,JOB,SUM(SAL),FIRST_VALUE(SUM(SAL))OVER(PARTITIONBYDEPTNOORDERBYSUM(SAL))FROMEMPGROUPBYDEPTNO,JOBORDERBYDEPTNO,JOB;......
  • oracle 分析函数 LAG、LEAD
    用SCOTT/TIGER登录。LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。SQL:SELECTJOB,SAL,LAG(SAL)OVER(ORDERBYJOB)FROMEMP;结果:SQL:SELECTJOB,SAL,LAG(SAL,2)......
  • oracle SQL引擎和PL/SQL引擎
    如下图所示,PL/SQL引擎会执行过程化语句,但它把SQL语句发送给SQL引擎处理,然后SQL引擎把处理的结果返回给PL/SQL引擎。PL/SQL和SQL引擎间的频繁切换会大大降低效率。典型的情况就是在一个循环中反复执行SQL语句。例如,下面的DELETE语句就会在FOR循环中被多次发送到SQL引擎中去:初始化一......