SAP HANA 存储过程中的IF While使用案例

简介:

-- run 1_datatype_data.sql before running this script

ALTER SESSION SET CURRENT_SCHEMA = SqlScriptDocumentation;

drop procedure while_proc; 
CREATE PROCEDURE while_proc LANGUAGE SQLSCRIPT AS 
    v_index1 INT := 0; 
    v_index2 INT := 0; 
    v_msg    VARCHAR(200) := ''; 
BEGIN 
    init_proc();

    WHILE :v_index1 < 5 DO 
        v_msg := 'Here is ' || :v_index1 || '.'; 
        ins_msg_proc(:v_msg); 
        v_index1 := :v_index1 + 1; 
    END WHILE;

    v_index1 := 0; 
    WHILE :v_index1 < 5 DO 
        v_index2 := 0; 
        WHILE :v_index2 < 5 DO 
            v_msg := 'Here is '|| :v_index1 || '-' || :v_index2 || '.'; 
            ins_msg_proc(:v_msg); 
            v_index2 := :v_index2 + 1; 
        END WHILE; 
        v_index1 := :v_index1 + 1; 
    END WHILE; 
END;

CALL while_proc(); 
SELECT message FROM message_box;

-----------------------------------------------------------

drop procedure upsert_proc; 
CREATE PROCEDURE upsert_proc (IN v_isbn VARCHAR(20)) LANGUAGE SQLSCRIPT 
AS 
    found INT := 1; 
BEGIN 
    init_proc(); 
    WHILE :found <> 0 DO 
        SELECT count(*) INTO found FROM books WHERE isbn = :v_isbn; 
        IF :found IS NULL THEN 
            ins_msg_proc('result of count(*) cannot be NULL'); 
        ELSE 
            ins_msg_proc('result of count(*) not NULL - as expected'); 
        END IF; 
            
        IF :found = 0 THEN 
            INSERT INTO books VALUES (:v_isbn, 'In-Memory Data Management', 1, 1, '2011', 42.75, 'EUR');    
        END IF; 
    END WHILE; 
END;

call upsert_proc('''978-3-642-19362-0'''); 
SELECT * FROM books; 
SELECT message FROM message_box;

-------------------------------------------------------------

drop procedure for_proc; 
CREATE PROCEDURE for_proc LANGUAGE SQLSCRIPT AS 
    v_index1 INT; 
    v_index2 DECIMAL(5,2); 
    v_msg    VARCHAR(200); 
BEGIN 
    init_proc();

    FOR v_index1 IN -2 .. 2 DO 
        FOR v_index2 IN REVERSE 0.5 .. 5.5 DO 
            v_msg := 'Here is '|| :v_index1 || '-' || :v_index2 || '.'; 
            ins_msg_proc(:v_msg); 
        END FOR; 
    END FOR; 
END;

CALL for_proc(); 
SELECT message FROM message_box;

专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862
分类:  SAP HANA

本文转自沧海-重庆博客园博客,原文链接:http://www.cnblogs.com/omygod/archive/2013/04/25/3043781.html,如需转载请自行联系原作者
目录
相关文章
|
存储 关系型数据库 MySQL
MySQL的存储过程——流程控制-while、repeat、loop循环
MySQL的存储过程——流程控制-while、repeat、loop循环
582 0
MySQL的存储过程——流程控制-while、repeat、loop循环
|
存储 关系型数据库 MySQL
MySQL的存储过程——流程控制-if判断
MySQL的存储过程——流程控制-if判断
595 0
MySQL的存储过程——流程控制-if判断
|
6月前
|
存储 SQL 关系型数据库
MySQL存储过程——if判断示例
MySQL存储过程——if判断示例
102 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
275 0
|
6月前
|
存储 SQL 关系型数据库
MySQL数据库——存储过程-循环(while、repeat、loop)
MySQL数据库——存储过程-循环(while、repeat、loop)
1320 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
MySQL数据库——存储过程-if条件判断、参数、case(介绍、用法、案例)
418 0
|
7月前
|
存储 Oracle 关系型数据库
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
**服务器存储数据恢复环境:** 某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。 **服务器存储故障&分析:** 该RAID5阵列中一块硬盘出现故障离线,热备盘自动激活替换故障硬盘,热备盘同步数据的过程中该raid5阵列中又有一块硬盘出现故障,RAID5阵列瘫痪,上层LUN无法正常访问。 因为本案例中存储控制器的磁盘检查策略严格,一旦某些磁盘性能不稳定,该型号存储控制器就将该块磁盘识别为坏盘,并将该块磁盘踢出RAID。一旦RAID中掉线的盘数到超过RAID级别允许掉盘的最大数量,该RAID将不可用,
服务器数据恢复—RAID5上层SAP+oracle数据恢复案例
|
7月前
|
存储 SQL 关系型数据库
探秘MSSQL存储过程:功能、用法及实战案例
探秘MSSQL存储过程:功能、用法及实战案例
158 1
|
7月前
|
存储 SQL Oracle
|
SQL 存储 JavaScript
SAP HANA 详细介绍
SAP HANA 详细介绍
998 0