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,如需转载请自行联系原作者
上一篇:蚂蚁区块链团队资讯简报20170514


下一篇:给UIScrollView添加category实现UIScrollView的轮播效果