dbms sql包的用法

2021-10-06 00:11:19 字數 3564 閱讀 5898

對於一般的select操作,如果使用動態的sql語句則需要進行以下幾個步驟: 

open   cursor---> parse---> define   column---> excute---> fetch   rows---> close   cursor; 

而對於dml操作(insert,update)則需要進行以下幾個步驟: 

open   cursor---> parse---> bind   variable---> execute---> close   cursor; 

對於delete操作只需要進行以下幾個步驟: 

open   cursor---> parse---> execute---> close   cursor;

例一:create table test(n_id   number,  v_name  varchar2(50), d_insert_date date);

alter table test add constraint pk_id  primary key(n_id);

declare

v_cursor   number;

v_sql      varchar2(200);

v_id       number;

v_name     varchar2(50);

v_date     date;

v_stat     number;

begin

v_id := 1;

v_name := '測試 insert';

v_date := sysdate;

v_cursor := dbms_sql.open_cursor;  --開啟游標

v_sql := 'insert into test(n_id, v_name, d_insert_date) values(:v_id,:v_name,:v_date)';

dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);  --解析sql

dbms_sql.bind_variable(v_cursor, ':v_id', v_id);   --繫結變數

dbms_sql.bind_variable(v_cursor, ':v_name', v_name);

dbms_sql.bind_variable(v_cursor, ':v_date', v_date);

v_stat := dbms_sql.execute(v_cursor);  --執行

dbms_sql.close_cursor(v_cursor);   --關閉游標

commit;

end;

例二:declare

v_cursor   number;

v_sql      varchar2(200);

v_id       number;

v_name     varchar2(50);

v_stat     number;

begin

v_name := '測試 update';

v_id := 1;

v_cursor := dbms_sql.open_cursor;

v_sql := 'update test set v_name = :v_name, d_insert_date = :v_date where n_id = :v_id';

dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);

dbms_sql.bind_variable(v_cursor, ':v_name', v_name);

dbms_sql.bind_variable(v_cursor, ':v_date', sysdate);

dbms_sql.bind_variable(v_cursor, ':v_id', v_id);

v_stat := dbms_sql.execute(v_cursor);

dbms_sql.close_cursor(v_cursor);

commit;

end;

例三:declare

v_cursor   number;

v_sql      varchar2(200);

v_id       number;

v_stat     number;

begin

v_id := 1;

v_sql := 'delete from test where n_id = :v_id';

v_cursor := dbms_sql.open_cursor;

dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);

dbms_sql.bind_variable(v_cursor, ':v_id', v_id);

v_stat := dbms_sql.execute(v_cursor);

dbms_sql.close_cursor(v_cursor);

commit;

end;

例四:declare

v_cursor    number;

v_sql       varchar2(200);

v_id        number;

v_name      varchar2(50);

v_date      varchar2(10);

v_stat      number;

begin

v_sql := 'select n_id, v_name, to_char(d_insert_date, ''yyyy-mm-dd'') from test';

v_cursor := dbms_sql.open_cursor;              --開啟游標

dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);  --解析游標

dbms_sql.define_column(v_cursor, 1, v_id);         --定義列

dbms_sql.define_column(v_cursor, 2, v_name, 50);   --注意:當變數為varchar2型別時,要加長度

dbms_sql.define_column(v_cursor, 3, v_date, 10);

v_stat := dbms_sql.execute(v_cursor);        --執行sql

loop

exit when dbms_sql.fetch_rows(v_cursor) <= 0;  --fetch_rows在結果集中移動游標,如果未抵達末尾,返回1。

dbms_sql.column_value(v_cursor, 1, v_id);   --將當前行的查詢結果寫入上面定義的列中。

dbms_sql.column_value(v_cursor, 2, v_name);

dbms_sql.column_value(v_cursor, 3, v_date);

dbms_output.put_line(v_id || ':' || v_name || ':' || v_date);

end loop;

end;

dbms sql包的用法

原博 對於一般的select操作,如果使用動態的sql語句則需要進行以下幾個步驟 open cursor parse define column excute fetch rows close cursor 而對於dml操作 insert,update 則需要進行以下幾個步驟 open cursor...

dbms sql包的用法

open cursor parse execute close cursor 例一 create table test n id number,v name varchar2 50 d insert date date alter table test add constraint pk id pr...

oracle中dbms sql的使用

一 使用dbms sql執行查詢 利用dbms sql執行select語句,其順序為 open cursor parse define column execute fetch rows close cursor 1 建立班組表結構,如下圖所示 proteamid 主鍵id proteamname ...