一般在end;(注意有分號(hào))后加反斜杠,代表是要執(zhí)行某個(gè)存儲(chǔ)過程,如果沒有反斜杠,則代表是普通換行。這種情況一般用于oracle中的命令窗口。
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括東坡網(wǎng)站建設(shè)、東坡網(wǎng)站制作、東坡網(wǎng)頁(yè)制作以及東坡網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東坡網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到東坡省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
如圖:
此時(shí),如果按回車鍵,是無法執(zhí)行存儲(chǔ)過程的。如果按回車,則是換行。
如果改成如下,則代表執(zhí)行成功。
一、符號(hào)的處理方案
1、在前面加上語(yǔ)句set define off
首先要理解是做什么的,這個(gè)符合在Oracle中表示替代變量,執(zhí)行時(shí)會(huì)提示用戶輸入,然后以及后面的字符會(huì)替換為用戶輸入的字符。
set define off的作用是關(guān)閉替代變量功能。當(dāng)然你還可以把替代變量改為其它符號(hào),比如改為*號(hào),輸入這個(gè)命令:set define *
2、在SQL語(yǔ)句中將分拆并替換成chr(38)
38是的ASCII碼,實(shí)例sql
3、分拆出號(hào),這也是最簡(jiǎn)單直接的方法
二、符號(hào)'的處理方案
1、直接轉(zhuǎn)義
2、分拆轉(zhuǎn)義
3、分拆并替換成chr(39)
在字段里查找'%',涉及到Oracle的轉(zhuǎn)義字符,現(xiàn)總結(jié)如下:
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
已選擇9行。
其中包含特殊的字符分別為%,_,,有可能包含這些字符的數(shù)據(jù)含有錯(cuò)誤,或者需要查找包含這些字符的數(shù)據(jù)。
SQL select * from test where test like 'sdd _%' escape ' ';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為' ';
SQL select * from test where test like 'sdd\_%' escape '\';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'\';
SQL select * from test where test like 'sdd=_%' escape '=';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'=';
SQL select * from test where test like 'sdd/_%' escape '/';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'/';
SQL select * from test where test like 'sddd_%' escape 'd';
未選定行
轉(zhuǎn)義字符為d,沒有實(shí)現(xiàn)轉(zhuǎn)義功能;
SQL select * from test where test like '%\_%' escape '\';
TEST
--------------------
sdd_kk
查找包含所有'_'的字段。
同理:通過這種方法查找含有'%'的所有字段:
SQL select * from test where test like '%\%%' escape '\';
TEST
--------------------
dffa%asfs
1%2345
1%54321
2%54321
%%54321
但是''不能通過轉(zhuǎn)義字符查找:
SQL select * from test where test like '%\%' escape'\';
select * from test where test like '%\%' escape'\'
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01424: 轉(zhuǎn)義符之后字符缺失或非法
可以通過另外的方式進(jìn)行轉(zhuǎn)義:
SQL select ascii('') from dual;
ASCII('')
----------
38
SQL select * from test where test like '%'||chr(38)||'%';
TEST
--------------------
AB
'''的轉(zhuǎn)義:
SQL select * from test where test like '%''%';
TEST
--------------------
d'd
特殊符號(hào)的數(shù)據(jù)的插入
SQL insert into test values('testtest');
輸入 test 的值: test
原值 1: insert into test values('testtest')
新值 1: insert into test values('testtest') -雖然插入,但是數(shù)據(jù)不對(duì)。
已創(chuàng)建 1 行。
SQL show define
define "" (hex 26)
SQL set define off
SQL show define
define OFF
SQL insert into test values('testtest');
已創(chuàng)建 1 行。
SQL show escape
escape OFF
SQL set escape on
SQL show escape
escape "\" (hex 5c)
SQL insert into test values('test\test');
已創(chuàng)建 1 行。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
testtest
TEST
--------------------
testtest
testtest
已選擇13行。
SQL commit;
提交完成。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
testtest
TEST
--------------------
testtest
testtest
已選擇13行。
SQL insert into test values('test\%test');
已創(chuàng)建 1 行。
SQL insert into test values('test\_test');
已創(chuàng)建 1 行。
SQL insert into test values('test\'test);
insert into test values('test'test)
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00917: 缺失逗號(hào)
SQL insert into test values('test''test');
已創(chuàng)建 1 行。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
testtest
TEST
--------------------
testtest
testtest
test%test
test_test
test'test
已選擇16行。
斜杠 就是讓服務(wù)器執(zhí)行前面所寫的 SQL 腳本。
因?yàn)槟闫胀ǖ?select 語(yǔ)句, 一個(gè)分號(hào),就可以執(zhí)行了。
但是如果你的是存儲(chǔ)過程, 那么遇到分號(hào),就不能馬上執(zhí)行了。
這個(gè)時(shí)候,就需要通過 斜杠 來執(zhí)行了。
下面是例子:
SQL set serveroutput on
SQL BEGIN
2 dbms_output.put_line('Hello World');
3 END;
4 /
Hello World
PL/SQL procedure successfully completed.