oracle 斜线出现次数,oracle一些操作小知识
1、
復(fù)制表結(jié)構(gòu)和表中數(shù)據(jù)
create table emp_ly
as select *
from emp;
說明:注意復(fù)制表結(jié)構(gòu)及數(shù)據(jù)不是sql
server里面的語法select * into emp_ly from
emp,這在oracle里面行不通,當(dāng)然如果僅復(fù)制結(jié)構(gòu)的話使用
只復(fù)制表結(jié)構(gòu)
create table emp_ly as
select * from
emp where
1<>1;
2、
創(chuàng)建一個(gè)存儲(chǔ)過程
create or replace procedure Sal_raise(emp_no
number,shuliang number)
as
begin
update emp_ly set sal=sal +
shuliang where empno=emp_no;
end;
/
說明:一定不能少begin
end;這兩個(gè)關(guān)鍵字,不然創(chuàng)建存儲(chǔ)過程會(huì)有提示
Warning: Procedure created with
compilation errors
意思是:警告,存儲(chǔ)過程雖然創(chuàng)建了,但是有編譯錯(cuò)誤。
查看運(yùn)行錯(cuò)誤可以輸入 SHOW ERRORS;
存儲(chǔ)過程的聲明參數(shù)類型時(shí)不能帶長(zhǎng)度,精度或者范圍,比如這個(gè)存儲(chǔ)過程emp_no
number這個(gè)參數(shù),就不能聲明為emp_no
number(4),同理,varchar2作為參數(shù)的類型是可以的,但是以varchar2(10)作為參數(shù)類型是不行的。
在sql
plus里面創(chuàng)建存儲(chǔ)過程,最后一個(gè)反斜線不能少,這是告訴編譯器運(yùn)行這個(gè)PL/SQL塊,但是在pl/sql developer的SQL
Window創(chuàng)建則不需要這個(gè)反斜線,選擇輸入的代碼按F8鍵執(zhí)行即可,缺點(diǎn)是編譯出錯(cuò)不會(huì)提示。
3、
調(diào)用存儲(chǔ)過程
A.在存儲(chǔ)過程或者觸發(fā)器中調(diào)用存儲(chǔ)過程
使用存儲(chǔ)過程名和參數(shù)即可,比如Sal_raise(7369,200);
B. 從交互式oracle工具中調(diào)用存儲(chǔ)過程
在sql
plus中調(diào)用,可以使用匿名塊的方式調(diào)用,如
begin
Sal_raise(7369,200);
end;
/
還可以使用EXECUTE或者CALL的語法調(diào)用,如
execute
Sal_raise(7369,200);
call
Sal_raise(7369,200);
值得注意的是,在sql
plus中執(zhí)行完了,如果沒有輸入明確的commit;命令數(shù)據(jù)是不會(huì)實(shí)際寫到表的,但是在SQL
Window窗口中只能通過
begin
Sal_raise(emp_no=>7369,shuliang=>200);
end;
方式調(diào)用存儲(chǔ)過程,而且執(zhí)行結(jié)果不需要輸入commit;命令也會(huì)直接寫入表。
4、
傳入存儲(chǔ)過程參數(shù)的三種方法:
Execute Sal_raise(7369,200);
Execute
Sal_raise(shuliang=>200,
emp_no=>7369);
execute
Sal_raise(7369,shuliang=>200);
第一種為常用方法,傳入?yún)?shù)順序和存儲(chǔ)過程聲明參數(shù)順序一樣
第二種為參數(shù)名稱和參數(shù)值一一對(duì)應(yīng)法,可以不按照存儲(chǔ)過程聲明參數(shù)順序傳入。
第三種為混合法,要求沒有參數(shù)名稱的值要寫在前面,還需要按照聲明參數(shù)的順序才行,比如execute
sal_raise(200,emp_no=>7369);就是不行的。
5、
查看存儲(chǔ)過程代碼
如果查看存儲(chǔ)過程的所有者,創(chuàng)建時(shí)間,是否有效等信息可以使用如下語句:
select * from all_objects where
object_name='SAL_RAISE';
如果要查看存儲(chǔ)過程的代碼,則可以使用如下代碼:
select text from all_source where
name='SAL_RAISE' order by line;
請(qǐng)一定注意的是:上面著兩個(gè)sql要有記錄返回,一定要將存儲(chǔ)過程的名字全部用大寫,否則會(huì)沒有記錄返回。
6、
帶輸出參數(shù)的存儲(chǔ)過程
稍微改造下成為帶輸出參數(shù)的存儲(chǔ)過程:
create or replace procedure
Sal_raise(emp_no number,shuliang number,sal_now out
number)
as
begin
update emp_ly set sal=sal +
shuliang where empno=emp_no;
select sal into sal_now from
emp_ly where empno=emp_no;
end;
調(diào)用方法和不帶輸出參數(shù)的存儲(chǔ)過程差不多,只不過需要聲明一個(gè)合適類型的變量來接收輸出參數(shù)而已。
set serveroutput on;
--主要用于后面的DBMS_OUTPUT要顯示結(jié)果
declare sal_now number;
begin
Sal_raise(7369,200,sal_now);
DBMS_OUTPUT.PUT_LINE(TO_CHAR(sal_now));
end;
7、
刪除存儲(chǔ)過程
DROP PROCEDURE
Sal_raise
總結(jié)
以上是生活随笔為你收集整理的oracle 斜线出现次数,oracle一些操作小知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos6.8 如何编译php,ce
- 下一篇: cx+oracle+sql含中文,sql