Breaking News
Loading...
10/02/2014

Dynamic query trong Oracle

Note lại một ví dụ về Dynamic Query trong Oracle.

Trong đoạn script dưới đây, dùng command execute immediate để thực thi một dynamic query và đưa kết quả trả về vào 1 variable có tên là n_n với kiểu dữ liệu là number. Sau đó in kết quả ra màn hình.

declare n_n number;
begin
execute immediate 'select account_list_id from account_list where account_list_id=150' into n_n;
dbms_output.put_line(n_n);
end;

Và đây là 1 ví dụ khác, truyền tham số vào dynamic query trong Oracle. Ở đây dùng using và truyền vào 2 tham số:

l_statement := 'BEGIN'
||' INSERT INTO book_reservations (
||' res_date
||' ,res_book_id
||' )
||' VALUES (:p_date'
||' ,:p_book_id'
||' );'
||'END;'
;
EXECUTE IMMEDIATE l_statement
USING IN SYSDATE
,IN p_requested_book_id
;
Tiếp theo, là 1 ví dụ về dùng dynamic cursor
DECLARE
  c_c sys_refcursor;
  str VARCHAR2(1000);
Type t_t
IS
  TABLE OF account_list%RowType;
  t t_t;
BEGIN
  str := 'select * from account_list where rownum < 4';
  OPEN c_c FOR str;
  FETCH c_c bulk collect INTO t;
  FOR i IN 1..t.count
  LOOP
    dbms_output.put_line(t(i).account_list_id);
  END LOOP;
END; 

0 comments:

Post a Comment

 
Toggle Footer