沒說清楚,你是在怎樣的環(huán)境使用ORACLE,是SQL*Plus,還是在程序里,還是用SQL腳本,還是...
創(chuàng)新互聯(lián)成立十載來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計、域名注冊、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。網(wǎng)站是否美觀、功能強大、用戶體驗好、性價比高、打開快等等,這些對于網(wǎng)站建設(shè)都非常重要,創(chuàng)新互聯(lián)通過對建站技術(shù)性的掌握、對創(chuàng)意設(shè)計的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。
用固定的語法結(jié)構(gòu)寫。
簡單來說,就是你一個存儲過程當(dāng)中創(chuàng)建了一個表table_a,然后要用insert into將其他的數(shù)據(jù)插入到這個table_a當(dāng)中,但是因為你在創(chuàng)建過程的時候 table_a還不存在,過程就會顯示有編譯錯誤。
因為table_a不存在必然導(dǎo)致過程無法執(zhí)行,所以無法編譯成功,而把insert into語句加如到execute immediate之后,則oracle不會再去理會這個對象是否存在,因此可以成功編譯和執(zhí)行。
在sqlplus和PL/SQL DEV中可以用或者定義變量,詳細說明如下:
(1) :“變量名”eg:name;
生命周期:單次引用中,不需要聲明,如果替換字符或日期類型,最好用單引號擴起
使用范圍:where、order by、列表達式、表名、整個SELECT 語句中
(2) :“變量名”eg:name;
生命周期:整個會話(session連接),不需要聲明
(3)define :“define 變量名=變量值”eg:DEFINE a = clark;
生命周期:整個會話,預(yù)先聲明,使用時用引用聲明的變量
define variable=用戶創(chuàng)建的CHAR類型的值:define 變量名=值;
define column_name(變量名):查看變量命令。
undefine 變量名:清除變量
define:查看在當(dāng)前會話中所有的替換變量和它們的值
1、創(chuàng)建測試表,
create table test_val(id varchar2(20),remark varchar2(20));
2、插入測試數(shù)據(jù);
insert into test_val select level, 'lvl_'||level remark from dual connect by level=100;
commit;
3、編寫語句,將表中的記錄數(shù)賦值給變量;
declare
v_int number;
begin
execute immediate 'select count(*) from test_val' into v_int;
end;
4、將變量值打印,查看結(jié)果;
dbms_output.put_line(v_int);
查看Oracle SQL綁定變量方法如下:
alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss';
set linesize 400
col sql_Id format a20
col name format a20
col datatype_string format a14
col value_string format a20
--這個sql從內(nèi)存中讀取綁定變量值信息,若是不在內(nèi)存中,則使用下一個sql
select
sql_id,name, datatype_string, last_captured,value_string from
v$sql_bind_capture where sql_id='dxfcacn4t4ppw' order by
LAST_CAPTURED,POSITION;
--這個sql從awr中讀取綁定變量值信息
select
instance_number, sql_id,name, datatype_string,
last_captured,value_string from dba_hist_sqlbind where
sql_id='fahv8x6ngrb50'order by LAST_CAPTURED,POSITION;