精华内容
下载资源
问答
  • 需求:公司一系统升级,要维护的数据库已有数据,该表没有序列、触发器等。此表要直接插入一些数据,插入的数据为了和以前的数据兼容(就是一样)。该表主键的生成以前是在代码中分两步进行的,即查询、更新(现在...

    需求:

    公司一系统升级,要维护的数据库表中已有数据,该表没有序列、触发器等。此表要直接插入一些数据,插入的数据为了和以前的数据兼容(就是一样)。该表主键的生成以前是在代码中分两步进行的,即查询、更新(现在要直接插入数据,不用服务端JAVA代码,不能用这个)。

    做法:

    本人很懒,希望一条SQL完成上面的插入并更新。而本人oracle数据库(应该说所有数据库)很菜,不会啊,于是找度娘,发现如下两篇资料对我有用(PS:找得好辛苦!):

    1、http://www.byywee.com/page/M0/S262/262303.html
    2、http://www.cnblogs.com/wuyisky/archive/2010/05/11/oracle_function.html
    其中第2篇资料有如下内容:
    函数调用限制
    1、SQL语句中只能调用存储函数(服务器端),而不能调用客户端的函数
    2、SQL只能调用带有输入参数,不能带有输出,输入输出函数
    3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)
    4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句

    附1我的函数:

    CREATE OR REPLACE FUNCTION GETPREPAYID
       RETURN INTEGER
    IS
       PRAGMA AUTONOMOUS_TRANSACTION;
       PREPAY_ID   INTEGER;
    BEGIN
           SELECT s.max_value
             INTO PREPAY_ID
             FROM sys_bill_maxvalue s
            WHERE s.account_type = 'const' AND s.bill_type = '预缴费记录'
       FOR UPDATE OF s.max_value;
    
       UPDATE sys_bill_maxvalue sb
          SET sb.max_value = PREPAY_ID + 1
        WHERE sb.account_type = 'const' AND sb.bill_type = '预缴费记录';
    
       COMMIT;
    
       RETURN (PREPAY_ID);
    END GETPREPAYID;

    附2我的SQL:


    INSERT INTO vehicle_prepay_record vpr (vpr.PREPAY_ID,
                                           vpr.VEHICLE_ID,
                                           vpr.PREPAY_DATE,
                                           vpr.PAY_MONEY,
                                           vpr.DISINFECTIONBAL,
                                           vpr.STATUS_FLAG,
                                           vpr.CREATOR,
                                           vpr.CREATE_DATE,
                                           vpr.DATASTATUS,
                                           vpr.VEHICLE_REMAIN_MONEY,
                                           vpr.DISINFECTIONBAL_REAIN)
       SELECT GETPREPAYID,
              V.VEHICLE_ID,
              SYSDATE,
              -v.DISINFECTIONBAL_REMAIN,
              v.DISINFECTIONBAL_REMAIN,
              'YA',
              '管理员',
              SYSDATE,
              '1',
              V.PAY_MONEY_REMAIN,
              V.DISINFECTIONBAL_REMAIN
         FROM DUAL, vehicle v;

    目前我有疑问:
    按函数调用限制第4条,我的SQL语句有DML语句为何还成功了?
    是不是函数调用限制说的有问题?
    展开全文
  • Oracle中调用函数的5种方法

    万次阅读 2018-06-03 16:20:52
    --函数主体: create or replace function get_sal (v_id IN emp_pl.empno%TYPE) return number is v_salary emp_pl.sal%TYPE :=0; begin SELECT sal INTO v_salary FROM emp_pl WHERE empno=v_id; RETURN...

    --表主体:

    SQL> SELECT * FROM emp_pl;
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7369 SMITH      CLERK      7902 1980/12/17    1000.00               20
     7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30
     7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
     7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
     7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
     7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
     7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
     7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
     7839 KING       PRESIDENT       1981/11/17    5000.00               10
     7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30
     7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
     7900 JAMES      CLERK      7698 1981/12/3      950.00               30
     7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
     7934 MILLER     CLERK      7782 1982/1/23     1300.00               10

    --函数主体:

    create or replace function get_sal
    (v_id IN emp_pl.empno%TYPE)
    return number
    is
        v_salary        emp_pl.sal%TYPE   :=0;
    begin
        SELECT sal INTO v_salary
        FROM emp_pl
        WHERE empno=v_id;
        RETURN v_salary;
    end get_sal;

    --方法1.PLSQL代码块

    SQL> set serveroutput on
    SQL> declare
      2    v_sal emp_pl.sal%type;
      3  begin
      4    v_sal :=get_sal(7902);
      5    dbms_output.put_line('7902的工资是'||v_sal);
      6  END;
      7  /

    --方法2.execute

    SQL> variable g_salary number
    SQL> execute  :g_salary     :=get_sal(7902)    --不用分号

    --方法3.call

    SQL> var get_salary1 number
    SQL> call get_sal(7902) into :get_salary1;    --需要用分号
    --variable同var

    --方法4.select

    SQL> select get_sal(7902) from dual;

    --方法5.将函数作为另一个子程序的参数
     

    SQL> execute dbms_output.put_line(get_sal(7902));
    展开全文
  • 数据库存储过程及存储函数

    千次阅读 2018-09-14 08:40:32
    原因是有一个功能是需要在不同的地方多次使用的,如果在每一个需要调用的地方都写一遍会造成代码量很大,所以我们把他抽取成单独的方法,在需要使用的时候调用这个方法。同样的道理,如果同一个数据库操作需要被多次...

    存储过程

    在java中经常用封装的思想来提高代码的重用性,在java中为什么要定义方法?原因是有一个功能是需要在不同的地方多次使用的,如果在每一个需要调用的地方都写一遍会造成代码量很大,所以我们把他抽取成单独的方法,在需要使用的时候调用这个方法。同样的道理,如果同一个数据库操作需要被多次使用,这个时候可以考虑将他抽取出来,这样被抽取出来的这个类似与方法的东西就是存储过程。所以,简单的说,存储过程实际就是封装在服务器上的一段PL/SQL代码片段,已经编译好了的代码片段。可见,由于已经编译好了,所以,客户端调用存储过程的执行效率比直接执行sql语句的效率会快。

    语法结构:
        create [or replace] procedure  存储过程的名称(参数名 in|out 参数类型)
        is |  as
            --声明部分
        begin
            --业务逻辑
        end;

    实例:给指定员工涨工资,并且打印涨薪前和涨薪后的工资。

    create or replace procedure  pro_test1(vempno in number,vnum in number)
            is
                --声明变量
                vsal number;
            begin

                --业务逻辑
                --查询当前的工资
                select sal into vsal  from emp where empno=vempno;
                    dbms_output.put_line('涨薪前'||vsal);
                --更新工资
                update emp set sal=vsal+vnum where empno=vempno;
                    dbms_output.put_line('涨薪后'||(vsal+vnum));
                --提交,更新操作,提交的是事务
                commit;
            end;    

    调用上面的存储过程:

    call pro_test1(给定一个员工编号,涨工资钱数);

    存储函数

    存储函数的其实和存储过程差不多。

    语法:

    create[or replace] function 存储函数的名字(参数名 in|out 参数类型...) return 参数类型

     is|as
     begin
     end;

    实例:查询指定员工的年薪sal*12+nvl(comm,0)

    create or replace function fun_test1(vempno number ) return number
                is
                    --声明变量
                    vtotalsal number;
                begin
                    select sal*12+nvl(comm,0) into vtotalsal from emp where empno=vempno;
                    return vtotalsal;
     end;

    调用存储函数:

    declare
                    vsal number;
                begin
                    vsal :=fun_test1(7369);
                    dbms_output.put_line(vsal);
    end;


    JDBC调用存储过程:

            //1、导入驱动包
            //2、注册驱动
            Class.forName("oracle.jdbc.OracleDriver");
    
            //3、获取连接
            Connection conn = DriverManager.getConnection
                    ("jdbc:oracle:thin:@localhost:1521:ORCL", "wsh", "wsh");
     
            //4、获取执行sql的statement对象,封装参数,执行sql
            String sql="{call proc_gettotalsal(?,?)}";
            CallableStatement statement = conn.prepareCall(sql);
    
            //设置输入参数
            statement.setInt(1, 7788);
    
            //注册输出参数
            statement.registerOutParameter(2, OracleTypes.NUMBER);
    
            //执行statement对象
            statement.execute();
    
            //5、获取结果,输出参数是几,获取的就是几
            int totalsal = statement.getInt(2);
    
            //输出结果:工资前和工资后
            System.out.println("工资"+totalsal);
            //6、释放资源
            statement.close();
            conn.close();
    
    
    
    

    JDBC调用存储函数:

                //1、导入驱动包
    			//2、注册驱动
    				Class.forName("oracle.jdbc.OracleDriver");
    
    			//3、获取连接
    				Connection conn = DriverManager.getConnection
    						("jdbc:oracle:thin:@localhost:1521:ORCL", 
    								"wsh", "wsh");
    
    			//4、获取执行sql的statement对象,封装参数,执行sql
    				String sql="{?= call func_getsal(?)}";
    				CallableStatement statement = conn.prepareCall(sql);
    
    			//5、获取结果
    				//设置输出参数
    				statement.registerOutParameter(1, OracleTypes.NUMBER);
    				//设置输入参数
    				statement.setInt(2, 7788);
    				//执行sql
    				statement.execute();
    				int totalsal = statement.getInt(1);
    				System.out.println("年薪工资:"+totalsal);
    
    			//6、关闭资源
    				statement.close();
    				conn.close();

     

     

     

     

     

     

     

     

    展开全文
  • 达梦数据库的查询以及函数的使用

    千次阅读 2020-07-25 19:59:52
    having筛选分组三、order by 子句分页查询top分页limit分页伪列分页达梦数据库函数多表联查子查询如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    达梦数据库查询

    查询基础语法结构

    select 列1 别名,…,列n 别名 from 表名1,…,表名n
    [where 条件语句]
    [group by 分组列1,…,列n] [having 筛选分组条件]
    [order by 排序列1,…,列n]

    以下所有的举例都基于下方的表student和course(只是为了举例,无实际意义)
    在这里插入图片描述
    在这里插入图片描述

    一、条件语句常用表达式

    1. 关系运算符:

    <, >, =, >=, <=, !=或者<>(不等于), !>(不大于), !<(不小于)

    2. 逻辑运算符:

    and, or, not

    3. 范围运算
    • 关系运算符和逻辑运算符的组合
    //查询年龄小于18,大于22的学生姓名
    select name from student where age<18 or age>22;
    //查询选修了英语课程并且成绩大于60的学生姓名,科目和成绩
    select s.name,c.c_name,c.grade from student s,course c 
    where c.sno=s.sno and c_name='大学英语' and grade>=60;
    • between…and…
    //查询年龄在18-22之间(包括18和22)的学生姓名
    select name from student where between 18 and 22;
    //查询年龄 不 在18-22之间的学生姓名
    select name from student where not between 18 and 22;
    • in(值1,…,值n)
    //查询年龄为18,22,24的学生姓名
    select name from student where in(18,22,24);
    //查询年龄 不 为18,22,24的学生姓名
    select name from student where not in(18,22,24);
    4. 模糊查询like
    • % 代表任意长度(可以为0)的字符串
    //查询姓张的学生的信息
    select * from student like '张%'
    • _ 代表单个字符串
    //查询姓张,且名字为两个字的学生的信息
    select * from student like '张_'
    5. 空值和非空值查询
    //查询没有选课的学生姓名
    select s.name from student s,course c 
    where c.sno=s.sno and course is null;
    //查询课程成绩已经出来的学生姓名,课程和成绩
    select s.name,c.c_name,c.grade from student s,course c 
    where c.sno=s.sno and grade is not null;

    二、group by子句以及having子句

    1. group by子句

    聚集函数:
    注意:聚集函数只能用于select子句和group by中的having子句

    • sum() ------求和
    • count() ----计算数量
    • max() ------求最大值
    • min() -------求最小值
    • avg() -------求平均值
    //查询每个学生选修的课程数量,总学分,最高成绩,最低成绩,平均成绩
    select s.name,count(c.c_name),sum(c.credit),
    max(c.grade),min(c.grade),avg(c.grade) 
    from student s,course c where c.sno=s.sno  
    group by s.name;
    2. having筛选分组

    注意:having 子句只能和group by 子句一起出现,不能单独出现

    //查询张三这个学生选修的课程数量,总学分,最高成绩,最低成绩,平均成绩
    select s.name,count(c.c_name),sum(c.credit),
    max(c.grade),min(c.grade),avg(c.grade) 
    from student s,course c where c.sno=s.sno  
    group by s.name having name='张三';

    三、order by 子句

    升序使用asc,降序使用desc,默认值是升序

    //查询张三这个学生的课程和成绩,并将成绩按照升序排列
    select c_name,grade from course order by grade;
    //查询张三这个学生的课程和成绩,并将成绩按照降序排列
    select c_name,grade from course order by grade desc;

    四、分页查询

    1. top分页

    规律总结:
    select top 每页显示条数 要查询的列表 from 表名 where 编号 not in(
    select top (当前页码 - 1) * 每页显示条数 编号 from 表名 );

    //每页显示3条数据,显示第3页的数据
     select top 3 * from course  where num not in(
      select top 6  num from course
     );

    2. limit分页

    规律总结:
    selct 列表 from 表名 limit (当前页码-1)*每页条数,每页显示条数;

    //每页显示3条数据,显示第3页的数据
      select  * from course limit 6,3;

    3. 伪列分页

    • rowid
      规律总结:
      select rowid,* from 表名;
      ----先查看rowid的编号是从几开始的,假设是n
      select rowid,* from 表名 where rowid
      between ((当前页码-1)*每页条数+n)
      and (当前页码 * 每页条数+n-1);
    //每页显示3条数据,显示第3页的数据
      select rowid,* from course;//n=1
      select rowid,* from course where rowid between 7 and 9;
    • rownum
      规律总结:
      select * from (
      select rownum,* from (
      ----此处可以是任意复杂的查询
      ) where rownum <= 当前页码 * 每页条数
      )t where t.rownum>(当前页码 - 1) * 每页显示条数;
    //每页显示3条数据,显示第3页的数据
    select * from (
    	select rownum,* from (
    		select * from course
    	)where  rownum <= 9
    )t where t.rownum>6;
    

    达梦数据库函数使用

    字符串函数

    1. length(string) ----获取字符串长度,包括空格
    //查询course表中的"高级路由技术"字符串的长度
    select length(c_name) from (
    	select c_name from course where c_name ='高级路由技术');
    1. concat(str1,…,strn) ----拼接字符串
    //将学号sno和姓名name两个字符串用_连在一起
    select concat(sno,'_',name) from student;
    1. initcap(string) ----将字符串的首个字母变成大写
    //将course表中的课程名"database"字符串的首字母变成大写
    select initcap(c_name) from (
    	select c_name from course where c_name ='database');
    
    1. insert(str1,begin_index,length,str2) ----从str1字符串的指定下标开始删除指定长度的内容,再插入str2并返回新字符串
    //将course表中的课程名"高级路由技术"变成"高级交换技术"
    select insert(c_name,3,2,'交换') from (
    	select c_name from course where c_name ='高级路由技术');
    1. lower(string) ----转小写
    //将course表中的课程名"English"改为全小写字母
    select lower(c_name) from (	
    	select c_name from course where c_name ='English');
    1. upper(string) ----转大写
    //将course表中的课程名"database"改为全大写字母
    select upper(c_name) from ( 	
    	select c_name from course where c_name ='database');
    
    1. trim(string) ----去除字符串左右两边的空格
    //将course表中的课程名"    高等数学"前面的空格去掉
    select trim(c_name) from (  
    	select c_name from course where c_name ='    高等数学');
    
    1. left(string,n) ----从字符串左边截取长度为n的子串
    //将course表中的课程名"高级路由技术"截取显示"高级路由"
    select left(c_name,4) from (	
    	select c_name from course where c_name ='高级路由技术');
    
    1. right(string,n) ----从字符串右边截取长度为n的子串
    //将course表中的课程名"高级路由技术"截取显示"路由技术"
    select right(c_name,4) from ( 
    	select c_name from course where c_name ='高级路由技术');
    
    1. substring(string,begin,n) ----从字符串的begin下标开始截取长度为n的子串
    //将course表中的课程名"高级路由技术"截取显示"路由"
    select substring(c_name,3,2) from ( 
    	select c_name from course where c_name ='高级路由技术');
    1. replace(string,old,new) ----将string字符串中的old字符串替换成new字符串
    //将course表中的课程名"高级路由技术"中的"路由"变成"交换"
    select replace(c_name,substring(c_name,3,2),'交换') from ( 
    	select c_name from course where c_name ='高级路由技术');
    

    数学函数

    1. pi() ----获取圆周率
     //查看圆周率
    select pi();
    1. rand() ----生成0-1之间的随机小数
    //生成100-999之间的一个随机数
    select  (900*rand()+100);
    1. floor() ----向下取整
    //生成一个随机的三位数(100-999)
    select floor(900*rand()+100);
    
    1. ceil() ----向上取整
    //生成一个随机的三位数(100-999)
    select ceil(901*rand()+99);
    1. round(number,n) ----四舍五入到n位小数
    //将course表中的成绩grade四舍五入都显示成整数
    select round(grade,0) from ( 	
    	select grade from course );
    1. trunc(number,n) ----直接截断到第n位小数
    //将course表中的成绩grade截断到个位
    select round(grade,-1) from (  	
    	select grade from course );
    1. mod(m,n) ----求m/n的余数
    //求8/5的余数
    select mod(8,5);
    1. sqrt(number) ----求平方根
    //求26的平方根(以小数5.0990195135927845显示结果)
    select sqrt(26);
    1. power(m,n) ----求m的n次方
    //求24.5的5次方(以小数8827351.53125显示结果)
    select power(24.5,5);

    日期函数

    1. curdate() ----获取当前日期
    //获取当前年月日
    select curdate();
    1. curtime() ----获取当前时间
    //获取当前精确的纳秒的时间
    select curtime();
    1. now() ----获取当前日期时间
    //获取当前年月日及其精确到纳秒的时间
    select now();
    1. add_days(date,num) ----在指定日期上增加指定的天数(可以为负数)
    //从course表中获取最近十天录入的成绩详情
    select * from course 
    where grade_input_date between add_days(now(),-10) and now();
    1. add_months(date,num) ----在指定日期上增加指定的月数
    //查询六个月后是哪天
    select add_months(now(),6);
    1. dateadd(datepart,num,date) ----在指定日期的指定部分增加指定的数值
    //查询68天后是几月几日
    select dateadd(DD,68,now());
    1. datediff(datepart,date1,date2)----计算两个日期的指定部分的差值(date2-date1)
    //计算距离大年初一还有多少小时
    select datediff(HH,now(),'2021-02-12');
    1. datepart(datepart,date) ----获取指定日期中指定部分的值
    //获取现在是19点13分多少秒
    select datepart(S,now());
    1. dayofweek(date) ----计算指定日期是一周中的第几天
    //查看今天是一周中的第几天(从周日开始算)
    select dayofweek(now());
    1. dayofyear(date) ----计算指定日期是一年中的第几天
    //查看今天是一年中的第几天
    select dayofyear(now());
    datepart取值datepart意义
    YEAR,YYYY,YY,SQL_TSI_YEAR
    MONTH,MM,M,SQL_TSI_MONTH
    DAY,DD,D,SQL_TSI_DAY
    HOUR,HH,SQL_TSI_HOUR
    MINUTE,MI,N,SQL_TSI_MINUTE
    SECOND,S,SQL_TSI_SECOND
    MILLISECOND,MS,SQL_TSI_FRAC_SECOND毫秒
    QUARTER,QQ,Q,SQL_TSI_QUARTER所在的季度
    DAYOFYEAR,DY,Y在年份中所处的天数
    WEEK,WK,WW,SQL_TSI_WEEK在年份中所处的周数
    WEEKDAY,DW在一周中所处的天数
    展开全文
  • 调用数据库函数

    2007-11-08 16:07:22
    sql 代码 set serveroutput on  declare  v_content_id number; --内容id,在content表一定存在 ... -- 返回的错误代码, 如果函数返回值代表有错误时,该参数有效,并需写入日志 v_PRO...
  • 云环境的id 是 vclass-34p02, 数据库的集合(表名) 为 square , 查询出调用函数传过来的 id, 得到结果后更新这条记录的redu值,redu 也是传过来的。 // 云函数入口文件 const cloud = require('wx...
  • 数据库 用户自定义函数

    千次阅读 2020-02-04 19:03:19
    文章目录用户自定义函数用户自定义函数和存储过程比较创建用户自定义函数管理用户自定义函数 用户自定义函数 用户自定义函数和存储过程比较 比较项 存储过程 ...在表达式或者赋值语句中调用 创...
  • 数据库 存储过程和函数

    千次阅读 2018-04-15 12:55:24
    存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的 SQL 语句。存储过程和函数可以避免开发人员重复的编写相同的 SQL 语句。而且,存储过程和函数是在 MySQL...
  • 数据库中自定义存储函数详解

    千次阅读 2016-04-02 15:10:59
    数据库中自定义存储函数详解
  • 数据库之MySQL自定义函数

    千次阅读 2020-04-27 09:42:52
    case语句 函数中的case语句与通用程序语言中的switch case语句类似,但有两种形式,第一种形式如下: CASE 变量 WHEN 值1 THEN 执行语句; [WHEN 值2 THEN 执行语句;] [ELSE 执行语句;] END CASE; 用case替代上面的...
  • 数据库内置函数及自定义函数

    千次阅读 2019-08-05 10:09:37
    一、数据库内置函数 二、数据库自定义函数 1、自定义函数的作用: - 提高SQL语句的重用性,共享性和可移植性; - 减少重复代码的编写,提高程序的可读性; - 能够实现较快的执行速度,减少网络流量,提高程序...
  • MySQL数据库update语句使用详解

    千次阅读 2020-09-25 17:31:32
    MySQL数据库update语句使用详解 本篇文章我们来讲讲如何对MySQL数据库进行更新操作,对数据库进行增删改查操作是我们必会的基础之一,会了这个增删改查我们可以在这基础上去编写更多的东西,废话不多说了,我们来看...
  • ![图片说明](https://img-ask.csdn.net/upload/201609/27/1474967639_514237.png)
  • 常用的Mysql数据库操作语句大全

    万次阅读 多人点赞 2018-01-05 09:42:16
     4、查看数据库中可用的表:  >SHOW TABLES;  5、查看表的结构:  >DESCRIBE tb_name;  也可以使用:  >SHOW COLUMNS in tb_name; //from也可以  6、删除表:  >DROP [ TEMPORARY ] ...
  • 在编写Web应用程序等系统时,会涉及到与数据库的交互,如果数据库中数据量很大的话,一次检索所有的记录,会占用系统很大的资源,因此常常采用分页语句:需要多少数据就只从数据库中取多少条记录。以下是Sql Server,...
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...
  • 语句表值函数

    千次阅读 2018-11-04 21:21:06
    --多语句表值函数 --多语句表值函数可以看做是标量函数和内联表值函数的结合体。 --语法: --create function 函数名([参数列表]) --returns 表变量名 table --(表变量的字段定义) --as --begin -- SQL...
  • 数据库面试题

    千次阅读 多人点赞 2018-05-24 10:46:20
    存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。 调用: 1)可以用一个命令对象...
  • SQL语句中SUM函数

    千次阅读 2014-10-21 09:22:02
    在工作有两个sum的求和函数相加的时候如果其中一个是null那么相加的结果也是null
  • 数据库的常见系统函数

    千次阅读 2018-11-08 16:06:27
    1.全局变量 @@DATEFIRST:返回当前设置的一周的第一天 @@ERROR:返回当前连接最后执行sql语句的错误代码 @@IDENTITY:返回当前连接作为最后...@@REMSERVER:仅在存储过程使用,返回调用存储过程的服务器的值 @@R...
  • Mybatis中调用mysql的函数

    万次阅读 2016-12-15 13:18:01
    Java 四大名著 英文下载 SELECT getSpellFull(#{name}) FROM dual
  • C# 对数据库操作的函数总结

    千次阅读 2016-05-27 10:53:05
    1.可以使用ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象), 2.对于Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。 3.对于所有其他类型的语句,返回值为-1。...
  • 上一篇文章以一些具体的面试题为例,例举了SQLite一些常见的核心函数,下面对其整理说明,同时加入了其他一些函数。 Ps:SQLite的许多内置函数...Android面试整理之SQLite数据库——sql语句和常用函数(一)  
  • 数据库的使用,经常用到函数和存储过程。都是为了实现某个sql功能,那么这两者有区别吗?都适用哪些场景?总结如下 总的来说函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。 1....
  • mysql在子查询使用自定义变量和...@变量名:=固定值 | 函数调用 | 条件语句 别名 mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; # 初始化变量 mysql> SELECT * FROM shop W...
  • 思路:在AM我们以及可以使用VO 进行sql语句条件的修改以满足自定义的条件的搜索,为什么不可以自己编写的sql语句?(以delete作为例子,用VO的删除,遇到了不能删除的尴尬,应该是自己有的地方有错误,自己之后找到原因就...
  • mybatis 调用MySQL函数

    千次阅读 2019-08-30 16:30:46
    假设函数名为func_name, 需要两个参数param1和param2 ...xml调用语句为: select func_name(#{pa1,mode=IN},#{pa2,mode=IN}) from dual pa1和pa2分别对应param1 和 param2 查询结果为函数的返回值 ...
  • 存储过程和存储函数中可包含流程控制语句及各种SQL语句。它们可以接受参数、输出参数、返回单个或者多个结果。 在MySQL中使用存储过程,而不是使用存储在客户端计算机本地的SQL程序的优点如下: 存储过程增加了SQL...
  • 存储过程、函数、触发器的区别 比较项目 存储过程 函数 是否有返回值 可以有,也可以没有 ...SQL语句(DML或SELECT)可否调用 不可以 可以,且可以位于FROM关键
  • Oracle--函数(创建、调用和删除)

    千次阅读 2020-01-04 22:46:34
    函数与过程在创建形式上有些相似,也是编译后放在内存供用户使用,只不过调用函数要用表达式,而不像过程只需调用过程名。另外,函数必须有一个返回值,而过程则没有。 创建函数 创建函数的语法和创建存储过程的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 284,408
精华内容 113,763
关键字:

数据库语句中怎么调用函数