SAP HANA存储过程中的游标使用(Cursor)

-- run 1_datatype_data.sql before running this script

ALTER SESSION SET CURRENT_SCHEMA = SqlScriptDocumentation;

drop procedure cursor_proc; 
CREATE PROCEDURE cursor_proc LANGUAGE SQLSCRIPT AS 
    v_isbn    VARCHAR(20); 
    v_title   VARCHAR(50) := ''; 
    v_price   decimal(5,2) := 0; 
    v_crcy    VARCHAR(3) := 'XXX'; 
    v_msg     VARCHAR(200); 
    CURSOR c_cursor1 (v_isbn VARCHAR(20)) FOR 
        SELECT isbn, title, price, crcy FROM books 
        WHERE isbn = :v_isbn ORDER BY isbn; 
BEGIN 
    init_proc();

    IF c_cursor1%ISOPEN    THEN 
        ins_msg_proc('WRONG: cursor open'); 
    ELSE 
        ins_msg_proc('OK: cursor not open');    
    END IF; 
    
    OPEN c_cursor1('978-3-86894-012-1');

    IF c_cursor1%ISOPEN    THEN 
        ins_msg_proc('OK: cursor open'); 
    ELSE 
        ins_msg_proc('WRONG: cursor not open');    
    END IF;

    FETCH c_cursor1 INTO v_isbn, v_title, v_price, v_crcy; 
    IF c_cursor1%FOUND THEN 
        ins_msg_proc('OK: cursor contains valid data'); 
    ELSE 
        ins_msg_proc('WRONG: cursor contains no valid data'); 
    END IF;

    ins_msg_proc(:v_title || ' identified by isbn ' || :v_isbn || ' costs ' || :v_price || ' ' || :v_crcy);

    FETCH c_cursor1 INTO v_isbn, v_title, v_price, v_crcy; 
    IF c_cursor1%NOTFOUND 
    THEN 
        ins_msg_proc('OK: cursor contains valid data'); 
    ELSE 
        ins_msg_proc('WRONG: cursor contains no valid data'); 
         ins_msg_proc(:v_title || ' identified by isbn ' || :v_isbn || ' costs ' || :v_price || ' ' || :v_crcy); 
    END IF;

    IF c_cursor1%ISOPEN 
    THEN 
        ins_msg_proc('OK: cursor open'); 
    ELSE 
        ins_msg_proc('WRONG: cursor not open');    
    END IF; 
    CLOSE c_cursor1; 
    IF c_cursor1%ISOPEN 
    THEN 
        ins_msg_proc('WRONG: cursor open'); 
    ELSE 
        ins_msg_proc('OK: cursor not open');    
    END IF; 
END;

call cursor_proc(); 
select message from message_box;

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

DROP PROCEDURE foreach_proc; 
CREATE PROCEDURE foreach_proc() LANGUAGE SQLSCRIPT AS 
    v_isbn    VARCHAR(20) := ''; 
    CURSOR c_cursor1 (v_isbn VARCHAR(20)) FOR 
       SELECT isbn, title, price, crcy FROM books 
       ORDER BY isbn; 
-- (see Bug 9197)  WHERE isbn = :v_isbn 
BEGIN 
    init_proc(); 
    FOR cur_row as c_cursor1('978-3-86894-012-1') DO 
        ins_msg_proc('book title is: ' || cur_row.title); 
    END FOR; 
END;

call foreach_proc(); 
select message from message_box;

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

本文转自沧海-重庆博客园博客,原文链接:http://www.cnblogs.com/omygod/archive/2013/04/25/3043786.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值