zoukankan      html  css  js  c++  java
  • (转载)DBMS_SQL package 学习

    本文转载自:http://blog.sina.com.cn/s/blog_4b9b16b301000ps8.html

    DBMS_SQL package 学习

    这个包提供了一种使用动态sql来访问数据库的方法。

    第一步:打开游标

    使用函数 function open_cursor return integer;

    定义变量 Cur_1 integer; --返回的新游标的ID值

    语句是Cur_1 := Dbms_Sql.Open_Cursor;

    第二步:解析要执行的语句

    使用过程procedure parse(c in integer, statement in varchar2,                  language_flag in integer);

    语句是Dbms_Sql.Parse(Cur_1, ’sql语句’, Dbms_Sql.V7);

    第三步:定义字段变量,其值对应于指定游标中某个位置元素的值(仅用于SELECT语句)

    使用过程procedure define_column(c in integer, position in integer, column in number);

    语句是Dbms_Sql.Define_Column(Cur_1, 1, column);

    定义第一列为column,可重复定义多个列;

    第四步:执行指定游标

    使用过程function execute(c in integer) return integer;--返回行数

    语句是Rows_1 := Dbms_Sql.EXECUTE(Cur_1);

    第五步:从指定的游标中取出记录

    使用过程function fetch_rows(c in integer) return integer;--返回行数

    采用If Dbms_Sql.Fetch_Rows(Cur_1) > 0 then 判断是否取到数据了

    然后返回游标中指定位置的元素,使用过程procedure column_value(c in integer, position in integer, value out number);

    语句是Dbms_Sql.Column_Value(Cur_1, 1, column);

    把游标中的第一列的值赋值给column,可重复赋值多个列;

    要加上end if;

    最后关闭游标

    语句是Dbms_Sql.Close_Cursor(Cur_1);

     

    以下是网上找到的一个例子

    DBMS_SQL封装过程中主要函数
    1、OPEN_CURSOR:返回新游标的ID值
    2、PARSE:解析要执行的语句
    3、BIND_VARIABLE:将给定的数量与特定的变量相连接
    4、DEFINE_COLOUMN:定义字段变量,其值对应于指定游标中某个位置元素的值
    (仅用于SELECT语句)
    5、EXECUTE:执行指定的游标
    6、EXECUTE_AND_FETCH:执行指定的游标并取记录
    7、FETCH_ROWS:从指定的游标中取出记录
    8、COLUMN_VALUE:返回游标中指定位置的元素
    9、IS_OPEN:当指定的游标状态为OPEN时返回真值
    10、CLOSE_CURSOR:关闭指定的游标并释放内存
    11、LAST_ERROR_POSITION:返回出错SQL语句的字节偏移量
    12、LAST_ROW_ID:返回最后一条记录的ROWID
    13、LAST_SQL_FUNCTION_CODE:返回语句的SQL FUNCTION CODE

    例:
    CREATE OR REPLACE
    procedure dml_sql (the_rq varchar2) as
    The_c1 Integer;
    The_result Integer;--dml_sql_result
    M_jls number;
    The_xh varchar2(2);
    Begin
    The_xh:=lpad(ltrim(the_rq),2,'0');
    The_C1 :=Dbms_sql.open_cursor;
    Dbms_sql.parse(the_C1,'select count(*) from user_indexes
    where table_name =''ZDCHB'''||the_xh,dbms_sql.v7);
    Dbms_sql.define_column(the_c1,1,M_jls);
    The_result:=Dbms_sql.execute(The_c1);
    If dbms_sql.fetch_rows(cursor1) > 0 then
    Dbms_sql.column_value(cursor1,1,M_jls);
    End if;
    Dbms_sql.close_cursor(The_C1);

  • 相关阅读:
    MT【126】点对个数两题之二【图论】
    MT【125】四点共圆
    MT【124】利用柯西求最值
    MT【123】利用第一次的技巧
    MT【122】一个重要的不平凡的无穷级数
    MT【121】耐克数列的估计
    MT【120】保三角函数
    MT【119】关于恒成立的一道压轴题
    计算机视觉目标检测的框架与过程
    使用模板类导致error LNK2019: 无法解析的外部符号
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/2177230.html
Copyright © 2011-2022 走看看