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,如需转载请自行联系原作者
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值