oracle重命名存儲過程
第一:表名稱作為傳遞參數,直接在儲存存儲過程中進行好像不行。
第二:列名稱也作為參數,使用動態SQL的時候怎麼得到返回的結果。
第二:使用動態SQL的時候,傳遞值不能直接放在StringInfo中直接使用EXECUTE IMMEDIATE StringInfo。這樣會報錯的,非常坑。需要使用<=:1 這樣的參數替換機制,然後使用 using xxxvalue1,xxxvalue2;
第四:批量刪除。
❷ 怎麼修改oracle資料庫存儲過程
怎麼修改oracle資料庫存儲過程
看你是不是用客戶端 工具了,你要是用了工具,在你的存儲過程,滑鼠右鍵,點 修改,再保存就行了。 你要好好利用工具啊。
❸ ORACLE 存儲過程是什麼 它的用處,好處是什麼概念性的東西多點。。
定義:存儲過程(Stored Procere )是一組為了完成特定功能的SQL 語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。
存儲過程是由流控制和SQL 語句書寫的過程,這個過程經編譯和優化後存儲在資料庫伺服器中,應用程序使用時只要調用即可。在ORACLE 中,若干個有聯系的過程可以組合在一起構成程序包。
優點:
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量。
4.安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。
簡單說,你在你的機器上寫了個存儲過程,這個存儲過程像那些表裡的數據一樣被放在遙遠的資料庫伺服器當中,但是它又是可執行的代碼,其他能連到資料庫伺服器的用戶,可以調用你寫的存儲過程
它的作用是隱藏細節,就是說,你寫的存儲過程代碼可能很復雜,但是其他人調用它卻很簡單,不用具體知道它是如何做的,且一次能完成多個指令
oracle有系統存儲過程和自定義存儲過程2種存儲過程。
系統存儲過程就是由oracle預先提供的一組完成特定功能的存儲過程,安裝完oracle就有了。
自定義存儲過程就是存在oracle資料庫里由一組plsql語句組成的自定義過程(procere)。它可以供其它oracle自定義存儲過程、自定義函數和job調用或者由客戶端程序調用。
❹ Oracle資料庫的存儲過程怎麼寫
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS
3 BEGIN
4 NULL;
5 END;
行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它;
行2:
IS關鍵詞表明後面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束.
存儲過程創建語法:
create or replace procere 存儲過程名(param1 in type,param2 out type)
as
變數1 類型(值范圍); --vs_msgVARCHAR2(4000);
變數2 類型(值范圍);
Begin
Select count(*) into 變數1 from 表A where列名=param1;
If (判斷條件) then
Select 列名 into 變數2 from 表A where列名=param1;
Dbms_output。Put_line(『列印信息』);
Elsif (判斷條件) then
Dbms_output。Put_line(『列印信息』);
Else
Raise 異常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
❺ oracle 存儲過程
create or replace procere sp_add_emp2( --創建名為sp_add_emp2存儲過程
v_empno emp.empno%type, --------- 傳入存儲過程中的參數
v_ename emp.ename%type,
v_deptno dept.deptno%type,
v_dname dept.dname%type,
num out number ----------存儲過程執行完畢後返回的值
)as
num1 number; ------自定義變數
num2 number;
begin
--查詢dept表中的數據總共有多少行,賦值給num1,
--條件是欄位deptno等於v_deptno(傳進來的參數)
select count(*) into num1 from dept where deptno=v_deptno;
if(num1=0) then --如果沒數據
--則給dept表的deptno 和dname列插入一條數據,值為v_deptno,v_dname
insert into dept(deptno,dname) values(v_deptno,v_dname);
end if; --If語句結束語
---同上。
select count(*) into num2 from emp where empno=v_empno;
if(num2=0)then
insert into emp(empno,ename,deptno) values(v_empno,v_ename,v_deptno);
else --如果查詢到有數據則提示錯誤信息,員工ID重復,不插入數據
raise_application_error(-202021,'員工id 重復!!!');
end if;
num:=num1; --定義的輸出參數等於num1。
commit; --結束存儲過程。
❻ oracle存儲過程怎樣重命名,除了用or replace 還有啥
create or replace 不是用來重命名的,是用來建立或替換同一名稱存儲過程。
重命名先可以復制舊的代碼,建立新的存儲過程再把舊的drop掉
❼ oracle 如何修改存儲過程名稱(不要跟我說先drop或者or replace之類的,謝謝)
PACKAGE can』t be renamed.
PACKAGE BODY can』t be renamed.
PROCEDURE can』t be renamed.
FUNCTION can』t be renamed.
❽ oracle :下面的存儲過程怎麼修改啊
你把execute immediate v_sql;這個改成dbms_output.put_line(V_sql);
然後將 limit 1000改小點,改成limit 10
在sql plus中執行存儲過程前先執行命令:
set serveroutput on;
然後再執行這個存儲過程
執行完了之後你就可以看到你輸出的這個V_Sql語句了,你再看看哪裡存在問題好了
❾ oracle 存儲過程
create [or replace] procere procere_name (varible {IN|OUT|IN OUT} type) {IS|AS}
[varible { in | out | in out }] type;
[varible { in | out | in out }] type;
......
[cursor curor_name IS select subclause]
begin
body
end [procere_name];
for example:
create or replace procere sp_login_error_count(user_name_var varchar2) IS
--創建名為sp_login_error_count的存儲過程,並定義傳參
--informix的語法(drop procere sp_login_error_count;create procere sp_login_error_count(user_name_var varchar(50)))
error_count_var integer;
--變數定義
--informix語法(define error_count_var integer;)
begin
--程序開始
--informix語法不用begin,直接開始
select error_count into error_count_var from users where user_name=user_name_var;
--select語句,找到的值放到變數中
--informix語法一樣
error_count_var :=error_count_var+1;
--變數加1,這是pl/sql的變數賦值運算。
--informix語法(let error_count_var=error_count_var+1;)
update users set error_count= error_count_var where user_name =user_name_var ;
--更新統計數
--informix語法一樣
commit;
--提交
--informix不需要提交
end sp_login_error_count;
--結束存儲過程
--informix語法(end procere;)
ORACLE存儲過程執行為execute procere_name或exec procere_name
INFORMIX存儲過程執行為execute procere procere_name
pl/sql程序由三個塊組成:聲明部分、執行部分、異常處理部分
declare
/* 聲明部分: 在此聲明PL/SQL用到的變數,類型及游標 */
begin
/* 執行部分: 過程及SQL語句 , 即程序的主要部分 */
Exception
/* 執行異常部分: 錯誤處理 */
End;
其中 執行部分是必須的。