ORACLE中DBMS_SQL封装过程

来源:互联网 发布:money pro mac 编辑:程序博客网 时间:2024/05/21 07:13

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

例1:

create or replace procedure LNQ (v_cardno varchar2, v_wdate datetime,v_wtime datetime)
is
vc1 NUMBER;
vi1 INTEGER;
vstr1 VARCHAR2(300);
BEGIN

-定义SQL命令
vstr1:='delete from emp where cardno=:cardno and wdate=:wdate and wtime=:wtime';

创建一个游标
vc1:=DBMS_SQL.OPEN_CURSOR;

向服务器发出一个语句并检查这个语句的语法和语义错误
DBMS_SQL.PARSE(vc1,vstr1,DBMS_SQL.V7);

assign parameter value
DBMS_SQL.BIND_VARIABLE(vc1,':cardno',v_cardno);
DBMS_SQL.BIND_VARIABLE(vc1,':wdate',v_wdate);
DBMS_SQL.BIND_VARIABLE(vc1,':wtime',v_wtime);

执行此语句,因为执行的是查询,所以必须跟着Fetch_Rows函数并为单个行检索数据

vi1:=DBMS_SQL.EXECUTE(vc1);

关掉游标
DBMS_SQL.CLOSE_CURSOR(vc1);
END;


例2:
    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);
    End;

原创粉丝点击