Oracle之DBMS | 您所在的位置:网站首页 › 用纸箱子做打印机教程 › Oracle之DBMS |
通常运用 DBMS_SQL 包一般分为 如下 几步: 1. open cursor : 打开 cursor 2. parse cursor :解析你要执行的 SQL 语句 3. bind variable :如果要执行的 SQL 语句中包含变量,在此就需要绑定变量 4. execute :执行 SQL 语句 5. close cursor :在执行后关闭此 cursor. 如果你还需要返回执行 SQL 的结果集,还需要使用 define_column,define_array 等方法 ,具体可以看如下流程图: -- The flow of procedure calls will typically look like this: -- -- ----------- -- | open_cursor | -- ----------- -- | -- | -- v -- ----- -- ------------>| parse | -- | ----- -- | | -- | |--------- -- | v | -- | -------------- | -- |-------->| bind_variable | | -- | ^ ------------- | -- | | | | -- | -----------| | -- | || execute | ->| define_column | -- | ------- | ------------- -- | |------------ | | -- | | | ----------| -- | v | v -- | -------------- | ------- -- | ->| variable_value | | ------>| execute | -- | | -------------- | | ------- -- | | | | | | -- | ----------| | | | -- | | | | v -- | | | | ---------- -- | || fetch_rows | -- | | | ---------- -- | | | | -- | | | v -- | | | -------------------- -- | | | | column_value | -- | | | | variable_value | -- | | | --------------------- -- | | | | -- | | 0 THEN --将前面定义的字段返回给变量v_b-- dbms_sql.column_value(cursor_name, 2, v_b); dbms_output.put_line('B is ' || v_b); ELSE EXIT; END IF; END LOOP; --数据处理完成后记得要将cursor关闭 dbms_sql.close_cursor(cursor_name); EXCEPTION WHEN OTHERS THEN dbms_sql.close_cursor(cursor_name); END;2. 使用 define_array 方法得到查询结果 前面已经分析了如何使用 define_column 方法得到查询结果,但有时我们想要一次得到多行查询结果,此时我们就需要使用define_array 方法,此方法常用于 DML 操作,稍后会有例子对此介绍,现在先来看一下如果使用 define_array. DECLARE c NUMBER; d NUMBER; n_tab dbms_sql.number_table; n_tab1 dbms_sql.number_table; indx NUMBER := 1; BEGIN c := dbms_sql.open_cursor; dbms_sql.parse(c, 'select * from cux_demo where rownum |
CopyRight 2018-2019 实验室设备网 版权所有 |