zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    [BZOJ3884] 上帝与集合的正确用法
    [BZOJ3518] 点组计数
    [BZOJ3601] 一个人的数论
    [BZOJ3529] [Sdoi2014]数表
    原生js实现无缝滚动轮播图-点击页码即刻显示该页码的内容
    原生js实现无缝滚动轮播图
    vue封装tinymce富文本组件,图片上传回调方法
    vue-cli项目结合Element-ui基于cropper.js封装vue图片裁剪组件
    js实现多文件上传(二)-- 拖拽上传
    js实现多文件上传(一)-- 图片转base64回显
  • 原文地址:https://www.cnblogs.com/omygod/p/3043786.html
Copyright © 2011-2022 走看看