當前位置:首頁 » 服務存儲 » oracle存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle存儲過程

發布時間: 2022-02-25 07:23:53

① oracle 存儲過程,寫一個簡單的Oracle存儲過程

ORACLE提供的擴展sql功能的編程語言,語法不難,和一般的開發語言差不多,關鍵是寫好需要帶著SQL調優的思想去寫。

② oracle中的存儲過程怎麼寫

Oracle存儲過程寫法實例

總結項目中寫的存儲過程例子:
Oracle存儲過程基本語法 存儲過程
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS/AS
3 BEGIN
4 NULL;
5 EXCEIPTION;
6 END;

1、創建存儲過程,後面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as

2、定義變數,此處用到了%TYPE和%ROWTYPE,參考 /database/201211/168564.html ,另外定義了一個游標,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE這個類型定義必須要在游標定義之後:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin開始塊:
begin

4、該插入語句使用了DBLINK,還有使用DBMS_OUTPUT.put_line('列印信息')進行信息輸出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);

SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('列印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception塊,使用WHEN OTHERS THEN,其中用raise可顯示錯誤信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('列印信息');
end;

註:關於游標的使用,如果像本例中使用for循環去遍歷游標的話則不需要顯式的去用open/close
cursor打開和關閉游標,此處會自己處理,如果使用fetch
into的話就需要顯式開關游標,另外任意執行一個update操作,用隱式游標sql的屬性%found,%notfound,%rowcount,%isopen觀察update語句的執行情況,也可以使用來判斷游標狀態,如IF
TEMPLATE_CUR%ISOPEN THEN。

③ 怎麼才oracle中查看存儲過程

可用語句查看或用第三方工具查看。

一、語句查看方法:

1、執行語句:

SELECTtext
FROMuser_source
WHERENAME='ProcereName'
ORDERBYline;--其中ProcereName為存儲過程名字,需要全部用大寫英文。

2、如要查P_TEST的存儲過程:

SELECTtext
FROMuser_source
WHERENAME='P_TEST'
ORDERBYline;

3、內容如下:

④ oracle存儲過程 ||什麼意思

在oracle裡面 ||想當於連接的意思!~
兩個字元型合並在一起!~
'a' || 'a' 結果就是'aa'

⑤ Oracle存儲過程

你這個不能算是oracle的過程。
建議下載一份oracle的sql 參考手冊官方文檔放在手邊,隨時備查。或者隨便找本oracle的教程看看都行。並不難。
我簡單寫個例子給你先:
oracle的過程:
create or replace 過程名 (參數1 in 類型,參數2 in 類型,......)
as
--變數定義,例如:
a number(12);
b varchar2(40);
--過程體開始:
begin

--變數賦值
a := 123;
--字元串拼接用「||」
b:='123';
b:= b||'abc'||'fasfdas';

--執行動態SQL
execute immediate 『delete a_table where c=5';
end;
--過程體結束

⑥ oracle 存儲過程中的 := 和=有什麼區別

:= 是賦值符號,例如: a := 2, 那麼變數a的值,就是2了
= 是比較符號, 例如: ... WHERE 欄位名 = 2,和 > < 是一樣的性質

⑦ 請問oracle怎麼執行存儲過程

我試驗過了,就是exec 存儲過程名或者execute 存儲過程名(參數),請你在仔細確認一下,你的存儲過程名寫沒寫對呀,或者你沒有進入sqlplus中?

----
以上,希望對你能有幫助。

⑧ ORACLE中怎麼執行存儲過程

執行帶參數的存儲過程

begin
存儲過程名(參數1,參數2,參數3……);
end;
/

執行不帶參數的存儲過程

begin
存儲過程名;
end;
/

⑨ Oracle 的存儲過程怎麼寫。

oracle 存儲過程的基本語法

1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...

3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;

4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

5.變數賦值
V_TEST := 123;

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;

7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;

8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試