精华内容
下载资源
问答
  • sql 存储过程一个字段[完成任务数] 为 float ,在显示过程中,有几个特殊行需要显示为百分数,请问如何修改? update #jingYingZhiBiaoTemp set 完成任务数=完成任务数*100 where 序号=17 or 序号=19 or ...
  • ALTER proc [dbo].[addbktodaydata1] ...exec sp_executesql @sql1,N'@sum5 float',@sum5[/color] set @sql2='update' +@bankuainame+ 'set day5= '+@sum5+' where begintime='+@begintime1+'' exec (@sql2) end
  • SQL存储过程

    2020-07-01 14:15:22
    什么是存储过程,如何创建一个存储过程 * Stored Procedure * 存储过程=SQL语句+流控制语句 定义存储过程 定义 create procedure 存储过程名称(【参数列表】) begin 需要执行的语句 end. 创建 CREATE ...

    什么是存储过程,如何创建一个存储过程

    * Stored Procedure  
    * 存储过程=SQL语句+流控制语句
    

    定义存储过程

    1. 定义
      create procedure 存储过程名称(【参数列表】)
      begin
      需要执行的语句
      end.
    2. 创建
    CREATE PROCEDURE `get_hero_scores`( OUT max_max_hp FLOAT, OUT min_max_mp FLOAT, OUT avg_max_attack FLOAT, s VARCHAR(255) )BEGIN SELECT MAX(hp_max), MIN(mp_max), AVG(attack_max) FROM heros WHERE role_main = s INTO max_max_hp, min_max_mp, avg_max_attack;END
    
    1. 调用
      call add_num(50);

    流程控制语句

    1. BEGIN…END:BEGIN…END 中间包含了多个语句,每个语句都以(;)号为结束符。
    2. DECLARE:DECLARE 用来声明变量,使用的位置在于 BEGIN…END 语句中间,而且需要在其他语句使用之前进行变量的声明。
    3. SET:赋值语句,用于对变量进行赋值。
    4. SELECT…INTO:把从数据表中查询的结果存放到变量中,也就是为变量赋值。
    5. IF…THEN…ENDIF:条件判断语句,我们还可以在 IF…THEN…ENDIF 中使用 ELSE 和 ELSEIF 来进行条件判断。
    6. CASE:CASE 语句用于多条件的分支判断,使用的语法是下面这样的。
    7. LOOP、LEAVE 和 ITERATE:LOOP 是循环语句,使用 LEAVE 可以跳出循环,使用 ITERATE 则可以进入下一次循环。如果你有面向过程的编程语言的使用经验,你可以把 LEAVE 理解为 BREAK,把 ITERATE 理解为 CONTINUE。
    8. REPEAT…UNTIL…END REPEAT:这是一个循环语句,首先会执行一次循环,然后在 UNTIL 中进行表达式的判断,如果满足条件就退出,即 END REPEAT;如果条件不满足,则会就继续执行循环,直到满足退出条件为止。
    9. WHILE…DO…END WHILE:这也是循环语句,和 REPEAT 循环不同的是,这个语句需要先进行条件判断,如果满足条件就进行循环,如果不满足条件就退出循环。

    存储过程使用的问题

    优点

    1. 一次编译,多次使用。提升了SQL的执行效率![在这里插入图片描述](https://static001.geekbang.org/resource/image/54/9f/54a0d3b0c0e5336c1da6fc84c909a49f.jpg)
    2. 将代码封装成模块,减少了开发的工作量。
    3. 减少网络传输量。
    

    缺点

    1. 可移植性差
    2. 调试困难
    3. 版本管理困难
    4. 不适合高并发场景。
    
    展开全文
  • 利用存储过程来实现下面的应用: 从一个账户转指定数额的款项到另一个账户中。 */ 建表:create table account(accountnum int,uname char(10),total float) insert into account values(1001,'u1',50000) ...

    利用存储过程来实现下面的应用: 

    从一个账户转指定数额的款项到另一个账户中。

    */ 建表:create table account(accountnum int,uname char(10),total float)             

    insert into account values(1001,'u1',50000)            

     insert into account values(1002,'u2',1000)             

     select * from account 


    建存储过程:  

    CREATE PROCEDURE TRANSFER  

    @outAccount int, 

    @inAccount int, 

    @amount 

    FLOAT AS 


         DECLARE  @totalDeposit FLOAT    

    BEGIN TRANSACTION                  /* 检查转出账户的余额 */                             SELECT @totalDeposit=total FROM ACCOUNT WHERE ACCOUNTNUM=@outAccount     

        IF @totalDeposit IS NULL    /* 转出账户不存在或账户中没有存款 */       BEGIN                 ROLLBACK TRANSACTION          

        PRINT '转出账户不存在或账户中没有存款,不能操作!' 

     RETURN       

    END       


    IF @totalDeposit<@amount   /* 转出账户存款不足 */       

    BEGIN          

    ROLLBACK TRANSACTION          

    PRINT '转出账户存款不足,不能操作!'                                /*  建议使用函数RAISERROR('转出账户存款不足,不能操作!',10,1)   */          

    RETURN  

    END


    IF exists(SELECT * FROM ACCOUNT WHERE ACCOUNTNUM=@inAccount )    /* 检查转入账户是否存在 */        BEGIN                             

    UPDATE account SET total=total-@amount WHERE ACCOUNTNUM=@outAccount                              /* 修改转出账户,减去转出额 */          

    UPDATE account SET total=total+@amount WHERE ACCOUNTNUM=@inAccount                                                   /* 修改转入账户,增加转出额 */          

    COMMIT TRANSACTION                 /* 提交转账事务 */          

    PRINT '转账成功,谢谢使用本存储过程!'          

    RETURN         

    END     


    ELSE        

    BEGIN           

    ROLLBACK TRANSACTION            

    PRINT '转入账户不存在,不能操作!'          

    RETURN        

    END 

    本文转自程序猿博客51CTO博客,原文链接http://blog.51cto.com/haihuiwei/1704845如需转载请自行联系原作者


    365850153

    展开全文
  • 存储过程

    2010-03-17 13:07:00
    创建存储过程CREATE PROCEDURE ([参数1,参数2,...]) /*存储过程首部*/AS; /*存储过程体,描述该存储过程操作*/ CREATE PROCEDURE Transfer(inAccount INT, outAccount INT, amount FLOAT) AS /*存储过程体,P

    创建存储过程

    CREATE PROCEDURE <存储过程名> ([参数1,参数2,...])            /*存储过程首部*/

    AS

    <PL/SQL块>;             /*存储过程体,描述该存储过程操作*/

     

    CREATE PROCEDURE Transfer(inAccount INT, outAccount INT, amount FLOAT)

      AS

     

       /*存储过程体,PL/SQL块 - star*/

      DECLARE              

        totalDeposit FLOAT;

      BEGIN

        SELECT total INTO totalDeposit FROM ACCOUNT WHERE Accountnum = outAccount;

     

        IF totalDeposit IS NULL THEN

          ROLLBACK;         /*回滚,当有一个SQL语句执行时,条件不符合要求,撤销事务开始后的操作*/

          RETURN;

        END IF;

     

        IF totalDeposit < amount THEN

          ROLLBACK;

          RETURN;

        END IF;

     

        UPDATE account SET total = total - amount WHERE Accountnum = outAccount;

        UPDATE account SET total = total + amount WHERE Accountnum = inAccount;

     

        COMMIT;        /*提交事务*/

     

       END;

           /*存储过程体,PL/SQL块 - end*/

     

    重命名存储过程

    ALTER PROCEDURE <存储过程名1> RENAME TO <存储过程名2>;

     

    执行存储过程

    CALL PROCEDURE Transfer(1000032324,123244444,1000);

     

    删除存储过程

    DROP PROCEDURE Transfer;

    展开全文
  • 1.创建如下表 ...2.创建存储过程 CREATE OR REPLACE PROCEDURE TEST_PROCEDURE(MYNMAE IN VARCHAR2, AGE IN NUMBER) IS --int float都可以定义为 NUMBER 类型, 入参 VARCHAR2不要定义长度(...

     1.创建如下表

     

    2.创建存储过程

    CREATE OR REPLACE PROCEDURE TEST_PROCEDURE(MYNMAE IN VARCHAR2,
                                               AGE    IN NUMBER,
                                               OUT_R  OUT NUMBER,
                                               DATA   OUT SYS_REFCURSOR) IS
      --int float都可以定义为 NUMBER 类型, 入参 VARCHAR2不要定义长度(本来就是可变长度的)  IS AS都可以, 默认是IN,可以省略IN
      --入参mynmae不能作为赋值目标,即不可以 myname:='zhangsan'; 只能对声明的变量进行赋值(mysql最后啊也遵循这一点规范)
      --存储过程有IN OUT   函数只有IN
      --声明变量不需要 declare关键字
      --使用前必须先声明变量, 变量不区分大小写
      --字符串类型必须指定size(否则报错), 变量的声明必须在 begin之前
      --断点调试(在行号处打断点),选中 入参myname 右键选择 add variable to watches
      V_NAME       VARCHAR2(30) := '小丽' || '小花'; --变量的声明 和 赋值一块进行
      V_SQL        VARCHAR2(100); -- 也可以写为V_NAME my_user.name%type;  表示V_NAME变量 数据类型和my_user表的name字段一致
      I_BEGIN_DATE DATE;
    BEGIN
      OPEN DATA FOR
        SELECT * FROM MY_USER; --存储过程返回结果集
      OUT_R := 88; --给OUT赋值
      DBMS_OUTPUT.PUT_LINE(V_NAME); --输出结果到DBMS标签页面
      --oracle的动态sql
      V_SQL := 'SELECT NAME FROM MY_USER WHERE ID=:1'; --注意这里用的是=: 不是前面赋值用的:=
      EXECUTE IMMEDIATE V_SQL
        INTO V_NAME
        USING 1;
      COMMIT; --当执行增删改操作设计事务,必须COMMIT
      DBMS_OUTPUT.PUT_LINE(V_NAME);
      --存储过程中的异常问题
    EXCEPTION
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('error');
    END TEST_PROCEDURE;
    

    3.点击调试存储过程 F9 执行可以断点调试

    除了可以在下方表格填写入参, 当然也可以  :AGE替换为入参的数字,点击F8执行也是没问题的

     

    存储函数

    CREATE OR REPLACE FUNCTION TEST_FUNCTION(AGE IN NUMBER)
    RETURN NUMBER --返回的函数值类型
     AS
      V_NAME VARCHAR2(30); --定义变量但不用
    BEGIN
      RETURN AGE * 2;
    END;

     

     

    展开全文
  • declare @tdzsl float --提单物料数量 DECLARE @ckbz VARCHAR(20) --出库标志 DECLARE @cksl float --出库数量 DECLARE @tdls VARCHAR(40) --提单流水 set @strSql = 'UPDATE '+@suf+'.XSTDMX SET ...
  • 银行转账存储过程 USE [BankInfor] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Transfer](@inAccount int,@outAccount int,@amount float) as declare @totalDeposit ...
  • ----存储过程 INSERT_MAT_ID_PROCEDURE实例 create or replace procedure INSERT_MAT_ID_procedure (IN_PRD_PLAN_ID IN VARCHAR2,IN_MAT_ID IN VARCHAR2 ,results out varchar2) IS  v_str FLOAT;  v
  • JDBC 存储过程

    2019-09-30 21:24:25
    存储过程 DROP PROCEDURE IF EXISTS `addUser`; CREATE PROCEDURE `addUser` (in pname VARCHAR(45),in birthday date,in money float,out pid int) BEGIN INSERT into `user`(name,birthday,money) VALU.....
  • mysql的存储过程

    2020-02-06 16:32:27
    存储过程: 概念类似于函数,就是把一段代码封装起来。当要执行这一段代码的时候,可以通过调用该存储过程来实现。在封装的语句体里面,可以用if/else case while 等控制结构。可以进行sql编程。 添加存储过程 ...
  • 编写存储过程

    2019-02-27 10:59:00
    三:创建存储过程工欲善其事,必先利其器,准备数据如下: use sample_db;--创建测试books表create table books ( book_id int identity(1,1) primary key, book_name varchar(20), book_price float, book_auth ...
  • 1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部【#】、全局【##】临时存储过程) 2.创建存储过程 --选出价格区间的商品信息 create procedure sp_goods_price @minprice float ,...
  • MySQL存储过程学习

    2021-04-24 19:20:30
    局部变量就是一个存储过程内部定义的一些变量。 如下方式就可以自定义局部变量了。 需要注意的是:局部变量声明一定要放在存储过程体的开始 create PROCEDURE demo06(in p_in int) BEGIN DECLARE l_int int UNSIGNED...
  • SqlServer存储过程

    2019-02-14 15:42:19
    1.首先新建存储过程 CREATE PROCEDURE [dbo].[Test] --存储过程的名字 --传入的参数 @ID varchar(50), @Number float = null, @Tes varchar(2000) output, @Res varchar(2000) output --output 是输出 ...
  • mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION calc_ci_day_suc_rate(dt DATE, exp_version VARCHAR(64)) RETURNS FLOAT ...
  • 1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部【#】、全局【##】临时存储过程) 2.创建存储过程 --选出价格区间的商品信息 create procedure sp_goods_price @...
  • 文章目录存储过程与函数语法数据类型变量控制结构循环游标遍历数据双重循环调试样例参考链接 存储过程与函数 语法 数据类型 FREE教程 | PL/SQL数据类型 变量 /*定义变量*/ STATION_NAME1 varchar2(255); BAY_NAME1 ...
  • 本片博客需要读者自己明白十进制、十六进制、二进制之间的转换,文中不会介绍转换过程,需要了解详细过程的情查找相关资料 首先我们简单的介绍一下计算机中数据存储的基础知识,具体内容在大学课程《计算机组成原理...
  • 执行存储过程

    2018-12-07 16:55:37
    DECLARE  re float(8); BEGIN  PROC_REPORT('201811',re); END;
  • 存储过程分页

    2018-04-11 09:15:02
    set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER proc [dbo].[createPageproc]@pageIndex int,--当前的页码值@pageSize int,--每页显示的记录数.(每页显示几行数据)@rowCount float output,--表示总的记录数@...
  • Mysql存储过程

    2019-09-19 14:23:37
    类型有:int, float, date,varchar(length) CREATE PROCEDURE DEL_TEST_B(IN P_TEST VARCHAR(32)) BEGIN DELETE FROM hos_order_main_info WHERE order_id = P_TEST; END ; -- 调用 CALL DEL_TEST_B('040...
  • 背景:实现方式:详细代码ALTER PROCEDURE [dbo].[sp_GenerateSystemCaculateSalaryData] ( @EmployeeCode varchar(50), @SalaryCode varchar(50), @SalaryItemID varchar(50), @SalaryItemValue float output)...
  • JDBC之调用存储过程

    2017-07-09 23:38:50
    第一步:定义存储过程(注意:不同MySQL定义存储过程语法有差异) DELIMITER $$ DROP PROCEDURE IF EXISTS `jdbc`.`addUser` $$ CREATE PROCEDURE `jdbc`.`addUser` (IN `pname` varchar(45),IN `birthday` date,IN `...
  • 存储过程菜鸟例子

    千次阅读 2010-06-21 13:37:00
     这是在pubs库中创建一个名称为computePlus的存储过程,该存储过程的作用是,将两个float类型变量进行相加后,从第三个变量输出。 USE pubs GO CREATE PROCEDURE computePlus @...
  • java中调用存储过程(sqlserver)

    千次阅读 2019-02-14 21:05:49
    java中调用存储过程(sqlserver) sqlserver中定义存储过程,转账的例子 SELECT * FROM bank GO --创建存储过程 CREATE PROC myTRANSFER @inId int, @outId int, @money float, @inIdMoney float OUTPUT,--输出...
  • oracle 存储过程 很多实例 --绩点排名 --创建临时表 create global temporary table temp_rank(pname VARCHAR2(20),get_GPA float) on commit delete rows; --存储过程show_rank create or replace procedure ...
  • 在Java学习的过程中,遇到了关于float浮点数存储方式以及int类型转换float类型发生精度缺失问题。或许大家在刚接触时都会有疑问 虽然int类型与float类型的存储字节大小都是4字节,而且float的取值范围比int更大,为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 642
精华内容 256
关键字:

存储过程float