SQL使用繫結變數,測試例項。

chicken0915發表於2012-07-29

使用繫結變數,測試例項。

--建立M測試表

create table m (x int);

 

Table created.

--建立proc1過程

create or replace procedure proc1
as
begin
for i in 1..10000
loop
execute immediate
'insert into m values(:x)' using i;--使用變數
end loop;
end;
/

Procedure created.


--建立proc2過程

create or replace procedure proc2
as
begin
for i in 1..10000
loop
execute immediate
'insert into m values('||i||')';--未使用變數
end loop;
end;
/

Procedure created.

--開啟時間顯示

set timing on


select count(*) from m;

  COUNT(*)
----------
         0

Elapsed: 00:00:00.00

--執行沒有繫結變數的過程

exec proc2

PL/SQL procedure successfully completed.

Elapsed: 00:00:07.48--執行時間7.48秒

select count(*) from m;

  COUNT(*)
----------
     10000

Elapsed: 00:00:00.00

--清空M表

truncate table m;

Table truncated.

Elapsed: 00:00:00.33

select count(*) from m;

  COUNT(*)
----------
         0

Elapsed: 00:00:00.00

--執行有繫結變數的過程

exec proc1

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.81--執行時間0.81秒
select count(*) from m;

  COUNT(*)
----------
     10000

Elapsed: 00:00:00.00

過程1與過程2的時間明顯區別很大

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7755871/viewspace-738217/,如需轉載,請註明出處,否則將追究法律責任。

相關文章