- 數(shù)據(jù)庫(kù)高效優(yōu)化:架構(gòu)、規(guī)范與SQL技巧
- 馬立和 高振嬌 韓鋒
- 382字
- 2020-08-03 16:49:23
6.1 使用方法
我們可以在多種環(huán)境下使用綁定變量。
1.SQL
下面看看在SQL中如何使用綁定變量。
var v_empno number; //聲明變量 exec :v_empno:=7369; //變量賦值 select * from emp where empno=:v_empno; //執(zhí)行查詢(引用變量)
2.PL/SQL:
下面看看在PL/SQL中如何使用綁定變量。
1)PL/SQL中靜態(tài)SQL語(yǔ)句使用綁定變量:
declare vc_name varchar2(10); begin execute immediate 'select ename from emp where empno=:1' into vc_name using 7369; dbms_output.put_line(vc_name);
2)PL/SQL中動(dòng)態(tài)SQL語(yǔ)句使用綁定變量:
declare vc_column varchar2(10); vc_sql varchar2(4000); n_temp number; vc_ename varchar2(10); begin vc_column:='empno'; vc_sql:='delete from emp where '||vc_column||'=:1 returning enameinto :2'; execute immediate vc_sql using 7369 returning into vc_ename; dbms_output.put_line(vc_ename);
3)PL/SQL中通過批量綁定使用綁定變量:
declare cur_empsys_refcursor; vc_sql_varchar2(4000); type namelist is table of varchar2(10); enames namelist; CN_BATCH_SIZE constant pls_integer:=1000; begin vc_sql:='select ename from emp where emp>:1'; open cur_emp for vc_sql using 7900; loop fet chcur_emp bulk collect into enames limit CN_BATCH_SIZE; for i in 1..enames.count loop dbms_output.put_line(enames(i)); end loo; exit when enames.count<CN_BATCH_SIZE; end loop; closecur_emp;
3.Java
下面看看在Java中怎樣使用綁定變量。
1)Java中調(diào)用靜態(tài)SQL使用綁定變量:
String query="select empno,ename from emp where empno=7369"; pstmt=connect.prepareStatement(query); res=pstmt.executeQuery(); String query="select empno,ename from emp where empno=?"; pstmt=connect.prepareStatement(query); pstmt.setIne(1,7369); res=pstmt.executeQuery();
2)Java中通過批量綁定使用綁定變量:
String dml="update emp set sal=? whereempno=?"; pstmt=connection.prepareStatement(dml); pstmt.clearBatch(); for (int i=0;i<UPDATE_COUNT;++i) { pstmt.setInt(1,generateEmpno(i)); pstmt.setIne(2,generateSal(i)); pstmt.addBatch(); } pstmt.executeBatch(); connection.commit(); //這段代碼使用的是批量綁定的方式
因?yàn)橐肓私壎ㄗ兞浚瑢?duì)于SQL解析而言會(huì)帶來一些變化。下面通過帶有綁定變量的SQL解析問題加以說明。
推薦閱讀
- 同步:秩序如何從混沌中涌現(xiàn)
- MySQL高可用解決方案:從主從復(fù)制到InnoDB Cluster架構(gòu)
- 計(jì)算機(jī)綜合設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)
- 算法與數(shù)據(jù)中臺(tái):基于Google、Facebook與微博實(shí)踐
- 數(shù)據(jù)庫(kù)程序員面試筆試真題庫(kù)
- Learning Proxmox VE
- Starling Game Development Essentials
- 白話大數(shù)據(jù)與機(jī)器學(xué)習(xí)
- 數(shù)據(jù)庫(kù)原理與應(yīng)用
- 區(qū)域云計(jì)算和大數(shù)據(jù)產(chǎn)業(yè)發(fā)展:浙江樣板
- 從實(shí)踐中學(xué)習(xí)sqlmap數(shù)據(jù)庫(kù)注入測(cè)試
- 從Lucene到Elasticsearch:全文檢索實(shí)戰(zhàn)
- Rust High Performance
- 數(shù)據(jù)之美:一本書學(xué)會(huì)可視化設(shè)計(jì)
- 掌中寶:電腦綜合應(yīng)用技巧