oracle存儲過程錯誤
① 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單步調試
② oracle存儲過程語法錯誤
create or replace procere cx_tskc1_proc
is
begin
select 類別號,圖書編號,圖書名稱,庫存數 from 圖書明細表;
end cx_tskc1_proc;
/
這樣寫試一下,看看是否好用。
③ Oracle 定義存儲過程不能執行怎麼辦
無效狀態有兩種可能:
1、一種是你的存儲過程編輯沒有成功,創建了,但裡面有語法錯誤。
④ oracle存儲過程錯誤,怎麼改
覺得這段代碼是Oracle和SQL Server的混合體。你究竟使用的是哪個資料庫? 要在哪個數據中創建存儲過程?
nvarchar2既不是Oracle也不是SQL Server中有的類型;
Oracle中每個語句之後要有分號,存儲過程中的update語句後面沒有;
getdate()是SQL Server中獲取時間的函數,Oracle中沒有;
最後已經有end PROC_JSGC_AFTERZBFILEBEIAN;了,那麼前面的單獨的end;語句就重復了;
⑤ oracle執行存儲過程出錯
如果SYS.FEIYONG是個表什麼的,就要看你當前用戶是否有訪問這個對象的許可權,如果是個調用的存儲過程,看看這個存儲過程是不是能運行正確。
⑥ oracle 存儲過程 錯誤
end 就不需要了,與begin對應的是END P_zh_TABFPQX_11;
⑦ oracle 調用存儲過程出錯
call lineloss.curspkg.sp_pagination
其中 curspkg.sp_pagination 分別是包名,和過程名,
那麼 lineloss 是用戶名 了。
你創建 包 的用戶 是什麼呢? lineloss 嗎 ?
你當前登錄用戶是 ??? 有 lineloss.curspkg.sp_pagination 的執行許可權嗎 ?
⑧ 請問ORACLE創建存儲過程執行報如下錯誤是什麼原因導致的
你的存儲過程應該是編譯報錯,雖然創建了但是編譯有錯誤。
改了下你的程序:
create or replace procere edpsc2exe7(V_col in number,
V_play out varchar2)
IS
begin
case V_col
when 1 then
V_play := 'a';
when 2 then
V_play := 'b';
else
V_play := 'c';
end case;
dbms_output.put_line(V_play);
end ;
⑨ ORACLE 存儲過程執行時報錯
1、execute 後面應是SQL字元串,如:
begin
executeimmediate'select*fromal';
end;
2、改為以下形式就可以:
begin
print('helloworld');
end;