精华内容
下载资源
问答
  • MySQL系列—-创建存储函数游标的使用创建存储函数输入任意三个数,结果输出它们的最小值调用函数使用游标使用游标从表中查询信息从sc表中查询成绩高于80分的学生信息有帮助的别忘了点个赞再走哦!! 本期是MySQL...
  • mysql函数+游标 实现批量修改行级元素 sql脚本 -- mysql函数+游标 实现批量修改行级元素 delimiter // DROP PROCEDURE IF EXISTS p2// create procedure p2() begin declare myId,total int;-- 定义int变量 ...

    mysql函数+游标 实现批量修改行级元素

    sql脚本

    -- mysql函数+游标 实现批量修改行级元素
    delimiter //
    DROP PROCEDURE IF EXISTS p2//
    create procedure p2()
    begin
     declare myId,total int;-- 定义int变量
     declare myName varchar(60) character set utf8;-- 定义varchar变量
     declare done int default 0;
     declare cur cursor for select user_id,user_name from sys_user_copy;-- 查询
     declare continue handler for not found set done =1;
     open cur;
    set total = 0;
     xxx:loop
     fetch cur into myId,myName;-- 变量赋值
     update sys_user_copy suc set suc.remark=CONCAT(suc.user_type,myName) where suc.user_id=myId;-- 执行循环批量修改
     if done = 1 then
     leave xxx;
     end if;
     set total = total + 1;
     end loop;
     close cur;
    select total;-- 输出影响行数
    end //
    delimiter ;
    

    运行效果

    在这里插入图片描述

    展开全文
  • 文章目录实验12函数游标的创建和使用一、实验目的:二、实验环境:三、实验内容:四、实验过程:总结 实验12函数游标的创建和使用 一、实验目的: 1.理解批处理、脚本的概念,掌握T-SQL的流程控制语句及编程...

    实验12函数、游标的创建和使用

    一、实验目的:

    1.理解批处理、脚本的概念,掌握T-SQL的流程控制语句及编程方法。

    2.理解并掌握函数应用。

    3.学会正确使用游标。

    二、实验环境:

    Windows XP 系统、SQL Server 2005

    三、实验内容:

    1.在“学生成绩管理数据库: STDB”中创建“计算平均分”标量函数。在该函数中创建输入参数“@学号”和“@姓名”,以便查询不同学生的成绩平均分。调用该函数并查看执行结果。

    2.在“学生成绩管理系统”数据库中创建一个函数,该函数可返回某个学生或全部学生的学号,姓名,班级,课程名称,成绩,学分。调用该函数并查看执行结果。

    3.建立一个游标,利用游标显示“学生成绩管理系统”数据中学生信息表中的数据。

    四、实验过程:

    • 1.在“学生成绩管理系统”数据库中创建“计算平均分”标量函数。在该函数中创建输入参数“@学号”和“@姓名”,以便查询不同学生的成绩平均分。调用该函数并查看执行结果。

      use STDB;
      go
      /* 定义一个标量函数,即返回单值的函数*/
      create function 计算平均分(@学号 varchar(8),@姓名 varchar(12))
      returns int
      begin
      declare @平均分 int
      select @平均分=avg(grade) from s as a join sc as b on a.sno=b.sno
      where a.sno=@学号 and sname=@姓名
      return @平均分
      end
      go
      select dbo.计算平均分('1001','李勇') as 平均分
      
      
    • 2.在“学生成绩管理数据库:STDB”中创建一个函数,该函数可返回某个学生或全部学生的学号,姓名,课程名称,成绩,学分

      use STDB;
      go
      /*定义一个返回表值的函数*/
      create function 各科成绩(@学号 varchar(8)=null)
      returns @表 table(学号 varchar(8),姓名 varchar(12),课程名称 varchar(20),成绩 int,学分 int)
      as
      begin
      if @学号 is null
        begin
          insert into @表
          select s.sno,s.sname,c.cname,sc.grade,c.ccredit
          from s join sc on s.sno=sc.sno join c on sc.cno=c.cno
        end
      else 
        insert into @表
        select S.sno,S.SNAME,CNAME,GRADE,CCREDIT
        from S join sc on S.sno=Sc.sno join C on SC.CNO=c.CNO
        where S.sno=@学号
      return --返回
      end
      go
      
      select * from 各科成绩('1002')
      
      select * from 各科成绩(default)
      
      
    • 建立一个游标,利用游标显示“学生成绩管理数据库:STDB”中学生信息表中的数据。

      USE STDB;
      Go
      /*定义局部变量*/
      declare @学号 char(10),@姓名 varchar(8),@性别 char(2),@年龄 int,@系 varchar(30)
      /* 定义游标*/
      DECLARE 学生数据 CURSOR 
      FOR SELECT * FROM S 
      /* 打开游标*/
      OPEN 学生数据               
      /* 通过Fetch命令读游标中的数据,并存入指定的局部变量中*/
      FETCH NEXT from 学生数据 into  @学号,@姓名,@性别,@年龄,@系 
      /* 通过While循环,逐条输出游标中的记录*/
      WHILE @@FETCH_STATUS = 0     
        BEGIN
          print cast(@学号 as char(15))+cast(@姓名 as char(10))+cast(@性别 as char(6))+cast(@年龄 as char(6))+cast(@系 as char(10))
          FETCH NEXT from 学生数据 into  @学号,@姓名,@性别,@年龄,@系
        END
      /*关闭游标*/
      CLOSE  学生数据
      /* 释放游标所用的内存*/
      DEALLOCATE 学生数据 
      
      

    总结

    通过本次实验,对函数和游标有了一个初步的认识,掌握了基本的操作。希望课下通过自己努力,将它应用到我的期末数据库设计大作业上,呈现一个亮点。

    展开全文
  • Oracle 函数 游标的使用


    原文转载自:http://blog.csdn.net/zhengqiqiqinqin/article/details/9098699


    --创建函数并且调用
    create function fun1(v_in_ename varchar2)
    return number is
    v_annual_sal number;
    begin
      select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=v_in_ename;
      return v_annual_sal;
    end;
    /
    
    --直接调用函数
    var v_annual_sal number;
    call fun1('FORD') into:v_annual_sal;
    print v_annual_sal;
    
    --包
    --需求:编写一个包,该包有一个过程,该过程可以接收用户名和新的薪水
    --(将来用于通过用户名去更新薪水)还有一个函数,该函数可以接收一个用户名
    --(将来要实现得到该用户的年薪是多少)
    create package mypackage1 is
    --声明一个过程
    procedure pro1(v_in_ename varchar2,v_in_newsal number);
    function fun1(v_in_ename varchar2) return number;
    end;
    
    --编写包体
    create package body mypackage1 is
    --具体实现过程
    procedure pro1(v_in_ename varchar2,v_in_newsal number) is
    begin
      update emp set sal=v_in_newsal where ename=v_in_ename;
    end;
    function fun1(v_in_ename varchar2) return number is
      v_annual_sal number;
    begin
      select (sal+nvl(comm,0))*13 into v_annual_sal from emp 
      where ename=v_in_ename;
      return v_annual_sal;
    end;
    end;
    /  
    
    --pl/sql详细语法
    create or replace procedure pro1(v_in_empno number) is
    --定义变量
    v_tax_rate number :=0.03;
    v_sal number;
    v_tax number;
    v_ename varchar2(32);
    begin
    select ename,sal into v_ename,v_sal from emp
    where empno=v_in_empno;
    v_tax:=v_sal*v_tax_rate;
    dbms_output.put_line(v_ename||'工资是='||v_sal||'个人所得税='||v_tax);
    end;
    
    --pl/sql中使用%type 来提高列的灵活性
    create or replace procedure pro1(v_in_empno number) is
    --定义变量
    v_tax_rate number :=0.03;
    v_sal emp.sal%type;
    v_tax number;
    v_ename emp.ename%type;
    begin
    select ename,sal into v_ename,v_sal from emp
    where empno=v_in_empno;
    v_tax:=v_sal*v_tax_rate;
    dbms_output.put_line(v_ename||'工资是='||v_sal||'个人所得税='||v_tax);
    end;
    
    
    --【案例】编写一个过程,该过程可以接收一个用户编号,
    --并显示该用户的名字,薪水,工作岗位(注意:使用pl/sql记录实现)
    create or replace procedure pro1(v_in_empno in number) is
    --定义记录数据类型
    type zy_emp_record is record(
    v_ename emp.ename%type,
    v_sal emp.sal%type,
    v_job emp.job%type
    );
    --定义一个变量,类型是zy_emp_record
    v_emp_record zy_emp_record;
    begin
    select ename,sal,job into v_emp_record
    from emp where empno=v_in_empno;
    dbms_output.put_line('用户名:'||v_emp_record.v_ename||'薪水='||v_emp_record.v_sal);
    end;
    
    --游标的使用
    create or replace procedure pro1(v_in_deptno number) is
    --先定义一个游标变量类型
    type zy_emp_cursor is ref cursor;
    --定义一个游标变量
    v_emp_cursor zy_emp_cursor;
    --定义2个变量
    v_ename emp.ename%type;
    v_sal emp.sal%type;
    begin
    --执行语句
    open v_emp_cursor for select 
    ename,sal from emp where deptno=v_in_deptno;
    --取出游标指向的每行数据,用循环语句
    loop
    fetch v_emp_cursor into v_ename,v_sal; --这句话执行后会引起v_emp_cursor向下走
    --判断当前游标是否到达最后
    exit when v_emp_cursor%notfound;
    --输出
    dbms_output.put_line('用户名='||v_ename||' 薪水='||v_sal);
    end loop;
    --关闭游标
    close v_emp_cursor;
    end;
    
    --游标的使用,在上面的基础上添加工资
    create or replace procedure pro1(v_in_deptno number) is
    --先定义一个游标变量类型
    type zy_emp_cursor is ref cursor;
    --定义一个游标变量
    v_emp_cursor zy_emp_cursor;
    --定义2个变量
    v_ename emp.ename%type;
    v_sal emp.sal%type;
    v_empno emp.empno%type;
    begin
    --执行语句
    open v_emp_cursor for select 
    ename,sal,empno from emp where deptno=v_in_deptno;
    --取出游标指向的每行数据,用循环语句
    loop
    fetch v_emp_cursor into v_ename,v_sal,v_empno; --这句话执行后会引起v_emp_cursor向下走
    --判断当前游标是否到达最后
    exit when v_emp_cursor%notfound;
    --输出
    dbms_output.put_line('用户名='||v_ename||' 薪水='||v_sal);
    if v_sal <2000 then
      update emp set sal=sal+1000 where empno=v_empno;
    end if;
    end loop;
    --关闭游标
    close v_emp_cursor;
    end;
    
    
    
    
    
    
    
    
    
    
    
    
    
    




    展开全文
  • 编号 标准宗地编码(landCode) 所在区段编码(sectCode) 1 131001BG001 G001 2 131001BG002 G001 3 131001BG003 G001 4 131001BG004 G002 5 131001BG005 ...131001BG005在SQL serve
  • 该文件讲解了Oracle数据库中函数游标的创建以及包的定义,对数据库有更深层次的了解
  • 存储函数加上游标

    2017-06-12 17:20:15
    存储过程 CREATE OR REPLACE PROCEDURE "TMAIN"."UPDATESTANDARD" AS i number(15,5);... --类型定义  cursor cc is select SPWH,ENTERID from temp.LYY_SSHH_TEMP WHERE SPWH IS NOT NULL;  
    存储过程
    
    CREATE OR REPLACE PROCEDURE "TMAIN"."UPDATESTANDARD"
    AS
    i number(15,5);
            --类型定义
            cursor cc is  
    select  SPWH,ENTERID from  temp.LYY_SSHH_TEMP WHERE SPWH IS NOT NULL;
            --定义一个游标变量
            ccrec cc%rowtype;
          begin
         i:=200951;
            --打开游标
           open cc;
            --loop循环
           loop
                --提取一行数据到ccrec中
             fetch cc into ccrec;
             i:=i+1;
                --判断是否提取到值,没取到值就退出
                --取到值cc%notfound 是false
                --取不到值cc%notfound 是true
           --     exit when cc%notfound;
                --CODE_REGION,CODE_REGION_SHENG,CODE_REGION_SHI,CODE_REGION_XIAN
                update temp.LYY_SSHH_TEMP set ENTERID=i where SPWH=ccrec.SPWH AND enterid is null and SPWH is not null;
            end loop;
            --关闭游标
           close cc;
          end;
    上面的存储过程用于批量更新对应的数据然后调用存储过程的话使用call TMAIN.UPDATESTANDARD()
    展开全文
  • 编写一个函数,要求通过编号显示员工的姓名和工资,返回记录或者游标需要在函数定义还是定义函数之前定义? 表结构: table emp( eno char(6), ename char(6), ...
  • oracle中函数游标的使用

    万次阅读 2013-06-14 23:01:15
    oracle中函数游标的使用 --创建函数并且调用 create function fun1(v_in_ename varchar2) return number is v_annual_sal number; begin select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=v...
  • T-SQL:transact SQL,提供了变量定义,赋值操作,流程控制,函数等语句供用户使用 名称解释(不区分大小写) student学生表: 包含属性列:sno学号、sname学生姓名、age年龄、sex性别、dno学院编号、birthday生日...
  • 自定义函数+游标

    2015-04-27 15:53:35
     --打开游标  Open stuName;  fetch next from stuName Into @name;   While ( @@Fetch_Status=0)   begin  if(@name=@_name)  set @tot=@tot+1;  fetch Next From stuName Into @name; ...
  • 块、过程、函数游标的练习 注意:set serveroutput on(开启存储函数的结果显示) select object_name,status from user_objects where object_type='PROCEDURE';(查询当前用户下有哪些存储函数) 1、块的练习 Begin...
  • 定义游标引用类型,然后使用 该类型 声明游标变量 DECLARE --定义游标变量 --使用预定义游标引用类型 SYS_REFCURSOR 声明 my_cursor SYS_REFCURSOR; --先定义游标引用类型,然后使用 该类型 声明游标变量 --...
  • 索引,触发器,存储过程和存储函数游标的基本使用和了解索引口述并理解1. 什么是索引2. 索引的作用有哪些3. 索引的分类有哪些4. 创建索引的原则有哪些动手做1. 如何创建索引2. 如何删除索引触发器1. 什么是触发器2...
  • 存储过程 创建一个有返回值存储过程 drop TEMPORARY TABLE IF EXISTS contrast; CREATE PROCEDURE contrast(in x int,in...使用BEGIN END 来定义语句块,关键字in表示输入值,out表示输出值  执行存储函数 ca...
  • 上一篇博客讲了mysql数据库中的触发器,这一篇博客来说说mysql数据库中公认的稍微比较难理解的存储过程、函数游标定义:存储过程是一组为了完成特定功能的SQL语句集合。使用存储过程的目的是将常用或复杂的...
  • 1.定义并输出 declare pname table.field%type; begin select field into pname from table t where t.field_b=x; dbms_output.put_line(pname); end;   2.ifelse循环的使用 declare age number(3); ...
  • Mysql存储过程、函数游标基本使用

    千次阅读 2019-05-24 14:46:19
    存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握PL/SQL编程语言和编程规范,规范设计存储过程。 (3)实验重点和难点 实验重点:存储过程定义和运行。 实验难点:存储过程的...
  • --AUTHID DEFINER (定义者权限):指编译存储对象的所有者。也是默认权限模式。 --AUTHID CURRENT_USER(调用者权限):指拥有当前会话权限的模式,这可能和当前登录用户相同或不同(alter session set current_...
  • 分别使用函数游标实现SQL多行转一列 有时候在一些系统中我们需要用SQL语句将一对多关系表中的数据以每条记录一行的形式进行显示。本文分别采用函数游标的方法来实现该功能。 示例表描述如下 一张用户表及...
  • 有时候在一些系统中我们需要用...本文分别采用函数游标的方法来实现该功能。 示例表描述如下 一张用户表及文档表 现在想实现如下功能,查询出每个用户及其对应的文档名称的综合,如下结果 userID userName D
  • oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点。 平常在开发过程中对于CRUD功能较多。一般SQL即可应付,大不了就是长一点而已。但是遇到...
  • --定义游标类型 rtn_cur cur_type; --定义游标变量 v_kqtjzb_row kqtjzb_row_type;--考勤统计的行数据 type dwry_type is record( dw varchar2(100) , ryid varchar2(100), wdkcl int ); dwry_record dwry_type; ...
  • 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和函数,可以避免开发人员重复编写相同的SQL语句。 MYSQL存储过程和函数是保存在服务器中,在服务器中存储和执行,...
  • SQL函数游标变量声明与执行顺序

    千次阅读 2015-03-10 17:40:13
    想做个事,搜索前对变量做个判断处理,而搜索是游标完成的。 如上绿色注释部分(图片为示意,照抄会有错误。) ...这里有个矛盾,我先declare了游标,如果把IF语句放后边,我又怎么定义变量给
  • 游标控制 SQL 函数和 SQL 运算符; 用户把PL/SQL块整个发送到服务器端,oracle服务器端编译、运行,再把结果返回给用户(可节省网络流量); 可移植性,可运行在任何操作系统和平台上的Oralce 数据库; ...
  • 我们在实际的项目开发过程中,经常会遇到类似的情况:要求在不同的数据库表分块中,查询某些字段的数据信息并按照字符串的方式显示出来,如何解呢?... 上代码,大家可以直接复用(存储过程及函数中,参数不能定义长度
  • sql自定义函数游标的结合使用

    千次阅读 2015-02-13 20:46:31
    create function GetSurveyList(@name nvarchar(2000)) returns nvarchar(800) as begin declare @tempFKey varchar(200) declare @tempFValue varchar(200) declare @tempresult varchar(max) ...
  • MYSQL 循环嵌套(自定义函数游标)

    千次阅读 2016-09-09 15:23:45
    #记录下一个游标位置是否存在    DECLARE cur_a CURSOR FOR SELECT attr_id FROM nmsb_goods_attr WHERE goods_id = goodsid; #取出商品属性的游标  DECLARE attr_1 CURSOR FOR SELECT goods_attr_id FROM...
  • --定义游标类型 rtn_cur cur_type; --定义游标变量 v_kqtjzb_row kqtjzb_row_type;--考勤统计的行数据 type dwry_type is record( dw varchar2(100) , ryid varchar2(100), wdkcl int ); dwry_record dwry_type; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,687
精华内容 22,674
关键字:

函数定义游标